mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
Add confusion + items/selfdestruct fix
This commit is contained in:
parent
ae31902074
commit
bc9d073501
@ -231,7 +231,65 @@ This bug existed for all battles in Gold and Silver, and was only fixed for sing
|
||||
|
||||
([Video](https://twitter.com/crystal_rby/status/874626362287562752))
|
||||
|
||||
*To do:* Identify specific code causing this bug and fix it.
|
||||
**Fix:** Edit the end of [hram.asm](/hram.asm) to create a new temporary variable:
|
||||
|
||||
```diff
|
||||
hClockResetTrigger:: db ; ffeb
|
||||
+hIsConfusionDamage:: db ; ffec
|
||||
```
|
||||
|
||||
Then edit `HitSelfInConfusion` in [engine/battle/effect_commands.asm](/engine/battle/effect_commands.asm):
|
||||
|
||||
```diff
|
||||
pop af
|
||||
ld e, a
|
||||
+ ld a, 1
|
||||
+ ldh [hIsConfusionDamage], a
|
||||
ret
|
||||
```
|
||||
|
||||
Then, in the same file, edit `BattleCommand_DamageCalc`:
|
||||
|
||||
```diff
|
||||
.skip_zero_damage_check
|
||||
|
||||
+ xor a ; Not confusion damage
|
||||
+ ldh [hIsConfusionDamage], a
|
||||
+
|
||||
+ConfusionDamageCalc:
|
||||
; Minimum defense value is 1.
|
||||
ld a, c
|
||||
and a
|
||||
jr nz, .not_dividing_by_zero
|
||||
ld c, 1
|
||||
.not_dividing_by_zero
|
||||
```
|
||||
|
||||
```diff
|
||||
; Item boosts
|
||||
+ ldh a, [hIsConfusionDamage]
|
||||
+ and a
|
||||
+ jr nz, .DoneItem ; Item boosts don't apply to confusion damage
|
||||
call GetUserItem
|
||||
```
|
||||
|
||||
Finally, replace the calls in `CheckEnemyTurn` and `HitConfusion`, still in the same file:
|
||||
|
||||
```diff
|
||||
ld hl, HurtItselfText
|
||||
call StdBattleTextBox
|
||||
call HitSelfInConfusion
|
||||
- call BattleCommand_DamageCalc
|
||||
+ call ConfusionDamageCalc
|
||||
call BattleCommand_LowerSub
|
||||
```
|
||||
|
||||
```diff
|
||||
call HitSelfInConfusion
|
||||
- call BattleCommand_DamageCalc
|
||||
+ call ConfusionDamageCalc
|
||||
call BattleCommand_LowerSub
|
||||
```
|
||||
|
||||
|
||||
## Moves that lower Defense can do so after breaking a Substitute
|
||||
|
Loading…
Reference in New Issue
Block a user