Editorial illustration: Weekly streaks differ from daily rewards

Weekly streaks differ from daily rewards

The problem I needed to solve

A weekly streak depends on more than attendance: claiming the previous day’s reward matters too. I kept that behavior separate from the independent daily reward.

Implementation in this snapshot

WeeklyStreakRewardService.RefreshLoginState checks day distance and the previous claim date. Only a next-day visit following a claim advances the streak; otherwise it returns to day one.

The design decision and its cost

Day seven can activate another set. MetaCatalog determines whether a set loops or is single-use, and completed set IDs are saved.

Current boundaries

The policy depends on local dates and local saves. Clock reversal or cleared data can alter its interpretation; this code does not establish server-side tamper protection.

Review scenarios and contract meaning

Imagine a player who visits today but does not claim the reward. Attendance alone does not guarantee advancing tomorrow. In the current logic, a next-day visit must follow a recorded claim on the preceding day. Help text and each box’s state should make that difference visible; otherwise the player may understand daily attendance as sufficient. Day one, the day after a claim, the day after an unclaimed visit and a multi-day gap are four distinct checks of this contract.

Completing day seven is more than a celebration effect: selecting the next set depends on catalog data and completed-set state. A looping set and a single-use set create different expectations. Their saved identifiers matter, and casual renaming can change what history means. As with the daily reward, distribution success may describe a deferred presentation request rather than an increased balance, so reward durability remains a separate concern. I describe this as a local motivation path and do not infer a trusted server calendar or resistance to clock changes.

Seven boxes should represent this reward path rather than weekdays. Day three of a streak is not necessarily Wednesday, and a fresh path can begin on any weekday. Interface copy needs that distinction. The streak’s advancement policy defines its meaning; changing it later calls for deliberate review of existing saves and product text.

What this stage taught me

For me, daily rewards and streaks should differ in actual behavior. The screen should explain today’s position in the path rather than merely displaying seven attractive boxes.

Explore Dalo

Latest devlogs

Editorial illustration: Pasur launch and telemetry in the shared structure

Pasur launch and telemetry in the shared structure

Adding Pasur needs both a correct mode handoff and valid public telemetry.

Read article
Editorial illustration: Presenting selection and captures in Pasur

Presenting selection and captures in Pasur

Pasur motion should explain which hand card was played and which table cards were captured.

Read article
Editorial illustration: Pasur bot decisions from capture options

Pasur bot decisions from capture options

My teammate’s Pasur bot chooses among legal options without inspecting hidden opposing cards.

Read article
Dalo