shithub: pokecrystal

Download patch

ref: bc9d07350135f66137d9af3e8cc1421e30571d3e
parent: ae319020740918973849652a5d0ab8ff7f8dbbd7
author: ISSOtm <eldredhabert0@gmail.com>
date: Sun Mar 3 16:49:52 EST 2019

Add confusion + items/selfdestruct fix

--- a/docs/bugs_and_glitches.md
+++ b/docs/bugs_and_glitches.md
@@ -231,7 +231,65 @@
 
 ([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