summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-22 08:33:55 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-22 08:33:55 -0400
commit5dc37338f03f4ad8e3ab464627c7fb9b26331fe6 (patch)
treeb9ec431c18e5f595513ec57047ec4127703ab34b
parentd316bf52338ea3567e7b9849240f158863899c1b (diff)
Headbutt and Rock Smash OW
-rwxr-xr-xengine/npc_movement.asm2
-rwxr-xr-xevent/overworld.asm189
-rw-r--r--main.asm33
3 files changed, 217 insertions, 7 deletions
diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm
index 306066ae..e776402a 100755
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -205,7 +205,7 @@ Function7080: ; 7080 (1:7080)
scf
ret
-CheckFacingObject
+CheckFacingObject:
call GetFacingTileCoord
call CheckCounterTile
jr nz, .asm_70d0
diff --git a/event/overworld.asm b/event/overworld.asm
index 93fa99fd..3f39bccf 100755
--- a/event/overworld.asm
+++ b/event/overworld.asm
@@ -1184,10 +1184,193 @@ Text_AskWhirlpool: ; ce7b
text_jump Text_AskWhirlpool_
db "@"
-HeadbuttFunction: ; ce80
+HeadbuttFunction:
+ call TryHeadbuttFromMenu
+ and $7f
+ ld [wFieldMoveSucceeded], a
+ ret
+
+TryHeadbuttFromMenu: ; ce89 (3:4e89)
+ call GetFacingTileCoord
+ call CheckHeadbuttTreeTile
+ jr nz, .asm_ce9a
+ ld hl, HeadbuttFromMenuScript ; $4eaa
+ call QueueScript
+ ld a, $81
+ ret
+
+.asm_ce9a
+ call FieldMoveFailed
+ ld a, $80
+ ret
+
+; ceaa
+Text_DidAHeadbutt:
+ text_jump Text_DidAHeadbutt_
+ db "@"
+
+Text_NothingFromHeadbutt:
+ text_jump Text_NothingFromHeadbutt_
+ db "@"
+
+HeadbuttFromMenuScript:
+ reloadmappart
+ special UpdateTimePals
+HeadbuttScript:
+ callasm FieldMoveGetPartyNick
+ writetext Text_DidAHeadbutt
+ reloadmappart
+ callasm ShakeHeadbuttTree
+ callasm TreeMonEncounter
+ iffalse .nope_nothing
+ closetext
+ randomwildmon
+ startbattle
+ reloadmapafterbattle
+ end
+
+.nope_nothing:
+ writetext Text_NothingFromHeadbutt
+ waitbutton
+ closetext
+ end
+
+TryHeadbuttOW: ; cecc
+ ld d, HEADBUTT
+ call FieldMovePartyCheck
+ jr c, .asm_cedd
+ ld a, BANK(AskHeadbuttScript)
+ ld hl, AskHeadbuttScript ; $4edf
+ call CallScript
+ scf
+ ret
+
+.asm_cedd
+ xor a
+ ret
+
+AskHeadbuttScript:
+ opentext
+ writetext Text_AskHeadbutt
+ yesorno
+ iftrue HeadbuttScript
+ closetext
+ end
+
+Text_AskHeadbutt: ; cee9
+ text_jump Text_AskHeadbutt_
+ db "@"
+
+ call TryRockSmashFromMenu
+ and $7f
+ ld [wFieldMoveSucceeded], a
+ ret
+
+TryRockSmashFromMenu: ; cef7 (3:4ef7)
+ call GetFacingObject
+ jr c, .asm_cf0a
+ ld a, d
+ cp $18
+ jr nz, .asm_cf0a
+ ld hl, RockSmashFromMenuScript ; $4f31
+ call QueueScript
+ ld a, $81
+ ret
+
+.asm_cf0a
+ call FieldMoveFailed
+ ld a, $80
+ ret
+
+GetFacingObject: ; cf10 (3:4f10)
+ callba CheckFacingObject
+ jr nc, .asm_cf2f
+ ld a, [hObjectStructIndexBuffer]
+ call GetObjectStruct
+ ld hl, $1
+ add hl, bc
+ ld a, [hl]
+ ld [hLastTalked], a
+ call GetMapObject
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
+ ld d, a
+ and a
+ ret
+
+.asm_cf2f
+ scf
+ ret
+
+RockSmashFromMenuScript: ; cf31
+ reloadmappart
+ special UpdateTimePals
+RockSmashScript:
+ callasm FieldMoveGetPartyNick
+ writetext Text_UsedRockSmash
+ closetext
+ special WaitSFX
+ playsound SFX_STRENGTH
+ earthquake 84
+ applymovement2 RockSmashMovementData
+ disappear -2
+ callasm RockMonEncounter
+ copybytetovar wd117
+ iffalse .skip_battle
+ randomwildmon
+ startbattle
+ reloadmapafterbattle
+.skip_battle
+ end
+
+RockSmashMovementData:
+ rock_smash 10
+ step_end
+
+Text_UsedRockSmash:
+ text_jump Text_UsedRockSmash_
+ db "@"
+; cf60
+AskRockSmashScript:
+ callasm TryRockSmashOW
+ if_equal 1, .fail
+ opentext
+ writetext Text_AskRockSmash
+ yesorno
+ iftrue RockSmashScript
+ closetext
+ end
+.fail
+ jumptext Text_MayBeBreakable
+
+Text_MayBeBreakable:
+ text_jump Text_MayBeBreakable_
+ db "@"
+
+Text_AskRockSmash:
+ text_jump Text_AskRockSmash_
+ db "@"
+
+TryRockSmashOW: ; cf7f
+ ld d, ROCK_SMASH
+ call FieldMovePartyCheck
+ jr nc, .asm_cf8a
+ ld a, $1
+ jr .asm_cf8d
+
+.asm_cf8a
+ xor a
+ jr .asm_cf8d
+
+.asm_cf8d
+ ld [wScriptVar], a
+ ret
+
+FishingRodFunction: ; cf91
IF DEF(GOLD)
- dr $ce80, $d1e2
+ dr $cf91, $d1e2
ENDC
IF DEF(SILVER)
- dr $ce7e, $d1e0
+ dr $cf8f, $d1e0
ENDC
diff --git a/main.asm b/main.asm
index 19ee8bee..4dc1dccf 100644
--- a/main.asm
+++ b/main.asm
@@ -972,7 +972,10 @@ PlayWhirlpoolSound:
dr $8ca5e, $8ca6b
BlindingFlash:
- dr $8ca6b, $8cbb8
+ dr $8ca6b, $8ca8e
+
+ShakeHeadbuttTree:
+ dr $8ca8e, $8cbb8
OWCutAnimation:
dr $8cbb8, $8cd65
@@ -1088,7 +1091,13 @@ SECTION "bank2d", ROMX, BANK[$2d]
dr $b4000, $b8000
SECTION "bank2e", ROMX, BANK[$2e]
- dr $b8000, $bc000
+ dr $b8000, $ba378
+
+TreeMonEncounter:
+ dr $ba378, $ba3a1
+
+RockMonEncounter:
+ dr $ba3a1, $bc000
SECTION "bank2f", ROMX, BANK[$2f]
dr $bc000, $c0000
@@ -1430,7 +1439,25 @@ Text_MightyWhirlpool_::
dr $1941ec, $194225
Text_AskWhirlpool_::
- dr $194225, $195610
+ dr $194225, $194258
+
+Text_DidAHeadbutt_::
+ dr $194258, $19426d
+
+Text_NothingFromHeadbutt_::
+ dr $19426d, $19427d
+
+Text_AskHeadbutt_::
+ dr $19427d, $1942b1
+
+Text_UsedRockSmash_::
+ dr $1942b1, $1942c7
+
+Text_MayBeBreakable_::
+ dr $1942c7, $1942e8
+
+Text_AskRockSmash_::
+ dr $1942e8, $195610
ClockTimeUnknownText_:: ; 195610
dr $195610, $195624