Skip to content

handlers: campaign subsystem — mission list, battle lifecycle, and rewards - #39

Open
Seltraeh wants to merge 1 commit into
decompfrontier:devfrom
Seltraeh:split/10-campaign
Open

handlers: campaign subsystem — mission list, battle lifecycle, and rewards#39
Seltraeh wants to merge 1 commit into
decompfrontier:devfrom
Seltraeh:split/10-campaign

Conversation

@Seltraeh

@Seltraeh Seltraeh commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

handlers: campaign subsystem — mission list, battle lifecycle, and rewards

Branch: split/10-campaign
Base: dev
Merge position: 10 of 13

Part of the PR #28 split. Each PR branches from dev and contains only its
own changes, so this diff is exactly one subsystem. The set is designed to be
merged in numeric order; merging all 13 reproduces PR #28 byte for byte
(verified against tree 79a4e065).

Later PRs in the series touch Handlers.hpp, GmeControllerHandlers.cpp and
UserInfo.cpp too, so once earlier ones land this branch may need a rebase.
Those conflicts are always additions on both sides — keep both. Maintainer
edits are enabled, so feel free to push the rebase directly to this branch.

Nine handlers covering the campaign flow end to end.

What's included

Handler Request Purpose
CampaignStart 6Y0gaPQN Open campaign, return mission list
CampaignMissionGet RSm6p2d4 Per-mission progress
CampaignDeckGet C3a0VnQK Party deck
CampaignBattleStart h1RjcD3S Lock deck, begin battle
CampaignBattleEnd pTNB6yw3 Persist clear flag, credit reward, unlock next mission
CampaignReceipt 5Imq3wC0 Claim rewards
CampaignEnd jF9Kkro4 Exit
AreaInfo Zds63G5y Quest menu entry point
FixGiftInfo gLRIn74v Gift inbox acknowledgement

Why cleared-mission history matters

It is the progression driver. The client evaluates feature unlocks against this list, so anything gated on "mission N cleared" stays locked without it. This is not cosmetic.

Known incomplete

CampaignStart and CampaignReceipt still return minimal payloads pending MST-driven reward tables. Flagging now rather than letting you find it.

Verification

Campaign menu opens with tiles; clearing a mission persists the flag and unlocks the next.

…wards

Implements the campaign subsystem.

CampaignStart opens the campaign and returns the mission list.
CampaignMissionGet reports per-mission progress, CampaignDeckGet the party
deck. CampaignBattleStart locks the deck and begins the battle;
CampaignBattleEnd persists the clear flag, credits the archive-driven reward
and unlocks the following mission id. CampaignReceipt claims rewards and
CampaignEnd exits. AreaInfo is the entry point for the quest menu and
FixGiftInfo acknowledges the gift inbox.

Adds 25042026_CreateUserCampaignTables for user_campaign_missions,
user_campaign_decks and user_campaign_state.

UserInfo emits cleared-mission history from user_campaign_missions. This is
the progression driver: the client evaluates feature unlocks against this
list, so functions gated on "mission N cleared" stay locked without it.

CampaignStart and CampaignReceipt still return minimal payloads pending
MST-driven reward tables.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant