diff options
| author | dannye <33dannye@gmail.com> | 2020-11-04 00:06:44 -0600 |
|---|---|---|
| committer | dannye <33dannye@gmail.com> | 2020-11-04 00:06:44 -0600 |
| commit | 5647ca687b92954dcf37a6ea6bfbc9a341c32de4 (patch) | |
| tree | dde1937a1bfdb3a835f4155e1c2eb8f1aaf86f63 /engine/events/hidden_items.asm | |
| parent | Merge pull request #55 from Deokishisu/patch-1 (diff) | |
| download | pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.tar.gz pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.tar.xz pokeyellow-5647ca687b92954dcf37a6ea6bfbc9a341c32de4.zip | |
Sync with pokered
Diffstat (limited to 'engine/events/hidden_items.asm')
| -rwxr-xr-x | engine/events/hidden_items.asm | 172 |
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 |
