summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-21 20:27:23 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-21 20:27:23 -0400
commitd316bf52338ea3567e7b9849240f158863899c1b (patch)
tree18b2c1d51324312d5e78e90f56e3fd0ba4fbd499
parent0ec25fcb101fc2e29961df801b2739e905c661c5 (diff)
Whirlpool OW function
-rwxr-xr-xevent/overworld.asm151
-rw-r--r--main.asm16
2 files changed, 162 insertions, 5 deletions
diff --git a/event/overworld.asm b/event/overworld.asm
index c44ca0d8..93fa99fd 100755
--- a/event/overworld.asm
+++ b/event/overworld.asm
@@ -1039,10 +1039,155 @@ TryStrengthOW:
ld [wScriptVar], a
ret
-WhirlpoolFunction: ; cda0
+WhirlpoolFunction:
+ call FieldMoveBufferReset
+.asm_cda3
+ ld hl, .Jumptable
+ call DoFieldMoveAction
+ jr nc, .asm_cda3
+ and $7f
+ ld [wFieldMoveSucceeded], a
+ ret
+
+.Jumptable
+ dw TryWhirlpool
+ dw DoWhirlpool
+ dw FailWhirlpool
+
+TryWhirlpool:
+ ld de, ENGINE_GLACIERBADGE
+ call FieldMoveBadgeCheck
+ jr c, .asm_cdca
+ call TryWhirlpoolMenu
+ jr c, .asm_cdc7
+ ld a, $1
+ ret
+
+.asm_cdc7
+ ld a, $2
+ ret
+
+.asm_cdca
+ ld a, $80
+ ret
+
+DoWhirlpool:
+ ld hl, Script_WhirlpoolFromMenu
+ call QueueScript
+ ld a, $81
+ ret
+
+FailWhirlpool:
+ call FieldMoveFailed
+ ld a, $80
+ ret
+
+Text_UsedWhirlpool:
+ text_jump Text_UsedWhirlpool_
+ db "@"
+
+TryWhirlpoolMenu: ; cde1 (3:4de1)
+ call GetFacingTileCoord
+ ld c, a
+ push de
+ call CheckWhirlpoolTile
+ pop de
+ jr c, .asm_ce0c
+ call GetBlockLocation
+ ld c, [hl]
+ push hl
+ ld hl, WhirlpoolBlockPointers
+ call CheckOverworldTileArrays
+ pop hl
+ jr nc, .asm_ce0c
+ ld a, l
+ ld [wBuffer3], a
+ ld a, h
+ ld [wBuffer4], a
+ ld a, b
+ ld [wBuffer5], a
+ ld a, c
+ ld [wBuffer6], a
+ xor a
+ ret
+
+.asm_ce0c
+ scf
+ ret
+
+Script_WhirlpoolFromMenu: ; 4e0e
+ reloadmappart
+ special UpdateTimePals
+Script_UsedWhirlpool:
+ callasm FieldMoveGetPartyNick
+ writetext Text_UsedWhirlpool
+ reloadmappart
+ callasm DisappearWhirlpool
+ closetext
+ end
+
+DisappearWhirlpool: ; 4e20
+ ld hl, wBuffer3
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wBuffer5]
+ ld [hl], a
+ xor a
+ ld [hBGMapMode], a
+ call OverworldTextModeSwitch
+ ld a, [wBuffer6]
+ ld e, a
+ callba PlayWhirlpoolSound
+ call BufferScreen
+ call GetMovementPermissions
+ ret
+
+TryWhirlpoolOW:
+ ld d, WHIRLPOOL
+ call FieldMovePartyCheck
+ jr c, .asm_ce5f
+ ld de, ENGINE_GLACIERBADGE
+ call FieldMoveEngineFlagCheck
+ jr c, .asm_ce5f
+ call TryWhirlpoolMenu
+ jr c, .asm_ce5f
+ ld a, BANK(Script_AskWhirlpoolOW)
+ ld hl, Script_AskWhirlpoolOW ; $4e71
+ call CallScript
+ scf
+ ret
+
+.asm_ce5f
+ ld a, BANK(Script_MightyWhirlpool)
+ ld hl, Script_MightyWhirlpool ; $4e69
+ call CallScript
+ scf
+ ret
+
+Script_MightyWhirlpool:
+ jumptext Text_MightyWhirlpool
+
+Text_MightyWhirlpool:
+ text_jump Text_MightyWhirlpool_
+ db "@"
+
+Script_AskWhirlpoolOW: ; ce71
+ opentext
+ writetext Text_AskWhirlpool
+ yesorno
+ iftrue Script_UsedWhirlpool
+ closetext
+ end
+
+Text_AskWhirlpool: ; ce7b
+ text_jump Text_AskWhirlpool_
+ db "@"
+
+HeadbuttFunction: ; ce80
IF DEF(GOLD)
- dr $cda0, $d1e2
+ dr $ce80, $d1e2
ENDC
IF DEF(SILVER)
- dr $cd9e, $d1e0
+ dr $ce7e, $d1e0
ENDC
diff --git a/main.asm b/main.asm
index e4966647..19ee8bee 100644
--- a/main.asm
+++ b/main.asm
@@ -966,7 +966,10 @@ Function8c3e9:: ; 8c3e9
dr $8c3e9, $8c513
Predef_StartBattle::
- dr $8c513, $8ca6b
+ dr $8c513, $8ca5e
+
+PlayWhirlpoolSound:
+ dr $8ca5e, $8ca6b
BlindingFlash:
dr $8ca6b, $8cbb8
@@ -1418,7 +1421,16 @@ Text_BouldersMayNowBeMoved_::
dr $194199, $1941b5
Text_MonMayBeAbleToMove_::
- dr $1941b5, $195610
+ dr $1941b5, $1941d7
+
+Text_UsedWhirlpool_::
+ dr $1941d7, $1941ec
+
+Text_MightyWhirlpool_::
+ dr $1941ec, $194225
+
+Text_AskWhirlpool_::
+ dr $194225, $195610
ClockTimeUnknownText_:: ; 195610
dr $195610, $195624