mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-19 04:06:10 +02:00
ba8ac3d143
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.
27 lines
1.1 KiB
Lua
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,
|
|
}
|