aboutsummaryrefslogtreecommitdiffstats
path: root/engine/events/hidden_items.asm
diff options
context:
space:
mode:
authordannye <33dannye@gmail.com>2020-11-04 00:06:44 -0600
committerdannye <33dannye@gmail.com>2020-11-04 00:06:44 -0600
commit5647ca687b92954dcf37a6ea6bfbc9a341c32de4 (patch)
treedde1937a1bfdb3a835f4155e1c2eb8f1aaf86f63 /engine/events/hidden_items.asm
parentMerge pull request #55 from Deokishisu/patch-1 (diff)
downloadpokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.tar.gz
pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.tar.xz
pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.zip
Sync with pokered
Diffstat (limited to 'engine/events/hidden_items.asm')
-rwxr-xr-xengine/events/hidden_items.asm172
1 files changed, 172 insertions, 0 deletions
diff --git a/engine/events/hidden_items.asm b/engine/events/hidden_items.asm
new file mode 100755
index 00000000..63b95bcf
--- /dev/null
+++ b/engine/events/hidden_items.asm
@@ -0,0 +1,172 @@
+HiddenItems:
+ ld hl, HiddenItemCoords
+ call FindHiddenItemOrCoinsIndex
+ ld [wHiddenItemOrCoinsIndex], a
+ ld hl, wObtainedHiddenItemsFlags
+ ld a, [wHiddenItemOrCoinsIndex]
+ ld c, a
+ ld b, FLAG_TEST
+ predef FlagActionPredef
+ ld a, c
+ and a
+ jr nz, .itemAlreadyFound
+ call EnableAutoTextBoxDrawing
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, [wHiddenObjectFunctionArgument] ; item ID
+ ld [wd11e], a
+ call GetItemName
+ tx_pre_jump FoundHiddenItemText
+
+.itemAlreadyFound
+ ld a, $ff
+ ldh [hItemAlreadyFound], a
+ ret
+
+INCLUDE "data/events/hidden_item_coords.asm"
+
+FoundHiddenItemText::
+ text_far _FoundHiddenItemText
+ text_asm
+ ld a, [wHiddenObjectFunctionArgument] ; item ID
+ ld b, a
+ ld c, 1
+ call GiveItem
+ jr nc, .bagFull
+ ld hl, wObtainedHiddenItemsFlags
+ ld a, [wHiddenItemOrCoinsIndex]
+ ld c, a
+ ld b, FLAG_SET
+ predef FlagActionPredef
+ ld a, SFX_GET_ITEM_2
+ call PlaySoundWaitForCurrent
+ call WaitForSoundToFinish
+ jp TextScriptEnd
+.bagFull
+ call WaitForTextScrollButtonPress ; wait for button press
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, HiddenItemBagFullText
+ call PrintText
+ jp TextScriptEnd
+
+HiddenItemBagFullText::
+ text_far _HiddenItemBagFullText
+ text_end
+
+HiddenCoins:
+ ld b, COIN_CASE
+ predef GetQuantityOfItemInBag
+ ld a, b
+ and a
+ jr z, .doNotPickUpCoins
+ ld hl, HiddenCoinCoords
+ call FindHiddenItemOrCoinsIndex
+ ld [wHiddenItemOrCoinsIndex], a
+ ld hl, wObtainedHiddenCoinsFlags
+ ld a, [wHiddenItemOrCoinsIndex]
+ ld c, a
+ ld b, FLAG_TEST
+ predef FlagActionPredef
+ ld a, c
+ and a
+ jr nz, .doNotPickUpCoins
+ xor a
+ ldh [hUnusedCoinsByte], a
+ ldh [hCoins], a
+ ldh [hCoins + 1], a
+ ld a, [wHiddenObjectFunctionArgument]
+ sub COIN
+ cp 10
+ jr z, .bcd10
+ cp 20
+ jr z, .bcd20
+ cp 40
+ jr z, .bcd20 ; should be bcd40
+ jr .bcd100
+
+.doNotPickUpCoins
+ ld a, $ff
+ ldh [hItemAlreadyFound], a
+ ret
+
+.bcd10
+ ld a, $10
+ ldh [hCoins + 1], a
+ jr .bcdDone
+.bcd20
+ ld a, $20
+ ldh [hCoins + 1], a
+ jr .bcdDone
+.bcd40 ; due to a typo, this is never used
+ ld a, $40
+ ldh [hCoins + 1], a
+ jr .bcdDone
+.bcd100
+ ld a, $1
+ ldh [hCoins], a
+.bcdDone
+ ld de, wPlayerCoins + 1
+ ld hl, hCoins + 1
+ ld c, $2
+ predef AddBCDPredef
+ ld hl, wObtainedHiddenCoinsFlags
+ ld a, [wHiddenItemOrCoinsIndex]
+ ld c, a
+ ld b, FLAG_SET
+ predef FlagActionPredef
+ call EnableAutoTextBoxDrawing
+ ld a, [wPlayerCoins]
+ cp $99
+ jr nz, .roomInCoinCase
+ ld a, [wPlayerCoins + 1]
+ cp $99
+ jr nz, .roomInCoinCase
+ tx_pre_id DroppedHiddenCoinsText
+ jr .done
+.roomInCoinCase
+ tx_pre_id FoundHiddenCoinsText
+.done
+ jp PrintPredefTextID
+
+INCLUDE "data/events/hidden_coins.asm"
+
+FoundHiddenCoinsText::
+ text_far _FoundHiddenCoinsText
+ sound_get_item_2
+ text_end
+
+DroppedHiddenCoinsText::
+ text_far _FoundHiddenCoins2Text
+ sound_get_item_2
+ text_far _DroppedHiddenCoinsText
+ text_end
+
+FindHiddenItemOrCoinsIndex:
+ ld a, [wHiddenObjectY]
+ ld d, a
+ ld a, [wHiddenObjectX]
+ ld e, a
+ ld a, [wCurMap]
+ ld b, a
+ ld c, -1
+.loop
+ inc c
+ ld a, [hli]
+ cp -1 ; end of the list?
+ ret z ; if so, we're done here
+ cp b
+ jr nz, .next1
+ ld a, [hli]
+ cp d
+ jr nz, .next2
+ ld a, [hli]
+ cp e
+ jr nz, .loop
+ ld a, c
+ ret
+.next1
+ inc hl
+.next2
+ inc hl
+ jr .loop