Skip to content

Replace exploitable Hard-CPU/PvP exp bonuses with a flat 2x game multiplier#73

Open
sudo-owen wants to merge 1 commit into
mainfrom
claude/hard-mode-multiplier-refactor-5fa2C
Open

Replace exploitable Hard-CPU/PvP exp bonuses with a flat 2x game multiplier#73
sudo-owen wants to merge 1 commit into
mainfrom
claude/hard-mode-multiplier-refactor-5fa2C

Conversation

@sudo-owen
Copy link
Copy Markdown
Collaborator

The hard-CPU exp multiplier keyed off a client-set bit in the phantom
opponent config (OPP_HARD_CPU_BIT), so any user could self-grant 2x exp by
flagging their CPU opponent as "hard" — a nonsensical reward gate. Remove
the game-type exp bonuses entirely and apply a single flat GAME_EXP_MULT (2x)
to every battle's per-mon exp. Quest completion still stacks on top (max 4x).
Points are unchanged (base win/loss, only multiplied by quest).

Cleanup of now-dead machinery:

  • Constants: drop PVP_EXP_MULT / HARD_CPU_EXP_MULT, add GAME_EXP_MULT.
  • GachaTeamRegistry.onBattleEnd: default expMult = GAME_EXP_MULT, remove the
    PvP/hard-CPU branch, opponent-side reads, and the BONUS_HARD_CPU event flag
    (event bit 2 now reserved); drop IS_HARD_CPU_BIT from preservedFlags.
  • Remove the isHard param from setOpponentTeam / setOpponentTeamFor /
    _setOpponentTeam (and IPhantomTeamRegistry, CPU.startCustomBattle,
    CustomBattleProposal.isHard) and the OPP_HARD_CPU_BIT write.
  • PlayerProfile: remove IS_HARD_CPU_BIT, setHardCpuOpponents, isHardCpu()
    (profile bit 253 now reserved).
  • processing/generateSetupCPU.py: drop the hardCpus codegen path.
  • Update CLAUDE.md docs and tests to match (CPU games now earn the flat 2x).

…iplier

The hard-CPU exp multiplier keyed off a client-set bit in the phantom
opponent config (OPP_HARD_CPU_BIT), so any user could self-grant 2x exp by
flagging their CPU opponent as "hard" — a nonsensical reward gate. Remove
the game-type exp bonuses entirely and apply a single flat GAME_EXP_MULT (2x)
to every battle's per-mon exp. Quest completion still stacks on top (max 4x).
Points are unchanged (base win/loss, only multiplied by quest).

Cleanup of now-dead machinery:
- Constants: drop PVP_EXP_MULT / HARD_CPU_EXP_MULT, add GAME_EXP_MULT.
- GachaTeamRegistry.onBattleEnd: default expMult = GAME_EXP_MULT, remove the
  PvP/hard-CPU branch, opponent-side reads, and the BONUS_HARD_CPU event flag
  (event bit 2 now reserved); drop IS_HARD_CPU_BIT from preservedFlags.
- Remove the isHard param from setOpponentTeam / setOpponentTeamFor /
  _setOpponentTeam (and IPhantomTeamRegistry, CPU.startCustomBattle,
  CustomBattleProposal.isHard) and the OPP_HARD_CPU_BIT write.
- PlayerProfile: remove IS_HARD_CPU_BIT, setHardCpuOpponents, isHardCpu()
  (profile bit 253 now reserved).
- processing/generateSetupCPU.py: drop the hardCpus codegen path.
- Update CLAUDE.md docs and tests to match (CPU games now earn the flat 2x).
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.

2 participants