Files
gen1recomp/src/battle/rulesets/gen1_faithful.lua
T
johnjohto ba8ac3d143 Tick residuals after each move in Gen 1 mode
In pokered, MainInBattleLoop calls HandlePoisonBurnLeechSeed right
after every Execute*Move (core.asm:426-464), so a seeded, poisoned or
burned mon takes its residual before the slower side acts. The port
ran the whole sweep in endOfTurn, which made leech seed behave like
Gen 3+ and never showed the drain animation (#784).

The residual sweep now runs per action under the gen1_faithful
ruleset, gated by a new residualAfterMove flag; modern_clean keeps
the end of round sweep. The leech seed drain plays the ABSORB
animation from the healing side, the way the original flips
hWhoseTurn before PlayMoveAnimation. Item, ball, failed run and
ghost-fear turns still tick the player's residual, matching
ExecutePlayerMoveDone.
2026-08-04 12:06:21 -04:00

27 lines
1.1 KiB
Lua

-- Default ruleset: preserve Gen 1 behavior, including the famous quirks.
return {
name = "gen1_faithful",
-- accuracy roll is rand(0..255) < floor(acc*255/100): a 100%-accurate
-- move still misses on a roll of 255 (the 1/256 miss)
oneIn256Miss = true,
-- critical hits use base speed (not current speed) and ignore stat stages
critUsesBaseSpeed = true,
critIgnoresStages = true,
-- damage random factor r in [217,255], damage = damage * r / 255
randMin = 217,
randMax = 255,
-- Focus Energy famously QUARTERS the crit rate instead of x4
focusEnergyBug = true,
-- Wild/trainer enemies never spend PP (DecrementPP only touches the
-- player side in pokered). They therefore never Struggle from empty PP.
enemyUnlimitedPP = true,
-- Gen 1 Hyper Beam: no recharge when the target faints (or its
-- substitute breaks). Set false to always recharge like Gen 2+.
hyperBeamSkipRechargeOnKO = true,
-- Gen 1 runs HandlePoisonBurnLeechSeed right after each side's move
-- (core.asm:426-464): poison/burn/leech seed tick before the slower
-- mon acts, not in an end-of-round sweep like Gen 3+.
residualAfterMove = true,
}