Skip to content

VoteStreaks: support exact milestone streak rewards and migration from legacy VoteStreak data #1505

@semisolar

Description

@semisolar

Is your feature request related to a problem? Please describe.
We are looking at migrating from the legacy VoteStreak.Day setup to the newer VoteStreaks system, but the new system does not seem to support our current streak reward structure.

Our current rewards are exact milestone based, not interval based. For example, we reward players at daily streaks like 3, 5, 7, 14, 21, 28, 42, 56, 70, etc. Each milestone can have a different reward file, and later streaks usually give better/different rewards.

From what I can tell, VoteStreaks.Requirements.Amount works more like “every X successful periods.” So Amount: 7 would reward at 7, 14, 21, 28, etc. That is useful, but it does not replace exact milestone rewards where day 7, 14, and 21 each need different rewards.

We also have players with daily streaks in the hundreds, so resetting streaks during migration would be a major issue.

Describe the solution you'd like
It would be helpful if the new VoteStreaks system supported exact milestone rewards, possibly with an exact/interval mode.

Example idea:

VoteStreaks:
  Daily_14:
    Type: DAILY
    Mode: EXACT
    Requirements:
      Amount: 14
      VotesRequired: 1
    Rewards:
    - VoteSteak_14_Rewards_Online
    - VoteSteak_14_Rewards_Offline

A safe migration path from legacy active streak data would also be helpful, especially from fields like DayVoteStreak and DayVoteStreakLastUpdate.

We would want to migrate active/current streaks, not each player’s best historical streak. For example, if a player currently has DayVoteStreak: 168 and their DayVoteStreakLastUpdate shows the streak is still active, the new VoteStreaks state should continue from 168 rather than starting at 0.

Ideally this would:

  • preserve existing active player streak counts
  • use the legacy last-update timestamp to avoid migrating stale streaks
  • allow missed-day leniency from the new system
  • support different reward files at exact streak milestones
  • avoid re-granting old milestones players already passed

Describe alternatives you've considered
For now we are planning to keep the legacy VoteStreak.Day setup because it preserves current player streaks and supports our exact milestone reward structure.

We considered using VoteStreaks.Requirements.Amount, but interval rewards do not fit our setup because each milestone can have different rewards.

Additional context
Our server has long-running vote streaks, including players with streaks in the hundreds of days. The newer missed-day leniency system is useful, but we cannot migrate if it means losing existing streaks or changing milestone rewards into repeated interval rewards.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions