diff --git a/data/predef_pointers.asm b/data/predef_pointers.asm index eba3a0e4..1f0e290f 100644 --- a/data/predef_pointers.asm +++ b/data/predef_pointers.asm @@ -39,6 +39,7 @@ PredefPointers:: add_predef LearnMoveFromLevelUp add_predef LearnMove add_predef GetQuantityOfItemInBag + add_predef GetIndexOfItemInBag add_predef CheckForHiddenObjectOrBookshelfOrCardKeyDoor, $03 ; home bank add_predef GiveItem, $03 ; home bank add_predef ChangeBGPalColor0_4Frames diff --git a/data/text/text_4.asm b/data/text/text_4.asm index 39c7ab91..22fbfbb6 100644 --- a/data/text/text_4.asm +++ b/data/text/text_4.asm @@ -20,6 +20,10 @@ _PlayerBlackedOutText:: _RepelWoreOffText:: text "REPEL's effect" line "wore off." + prompt + +_RepelUseAnotherText:: + text "Use another?" done _PokemartBuyingGreetingText:: diff --git a/engine/items/get_bag_item_quantity.asm b/engine/items/get_bag_item_quantity.asm index f10df1a0..030703f1 100644 --- a/engine/items/get_bag_item_quantity.asm +++ b/engine/items/get_bag_item_quantity.asm @@ -16,3 +16,23 @@ GetQuantityOfItemInBag: .notInBag ld b, 0 ret + +GetIndexOfItemInBag: +; In: b = item ID +; Out: b = index of item in bag (FF if not) + call GetPredefRegisters + ld hl, wBagItems - 1 + ld c, -1 +.loop + inc c + inc hl + ld a, [hli] + cp $ff + jr z, .notInBag + cp b + jr nz, .loop + ld b, c + ret +.notInBag + ld b, a + ret diff --git a/engine/overworld/use_another_repel.asm b/engine/overworld/use_another_repel.asm new file mode 100644 index 00000000..7e1a7b6d --- /dev/null +++ b/engine/overworld/use_another_repel.asm @@ -0,0 +1,41 @@ +UseAnotherRepel:: + ld b, REPEL + push bc + call IsItemInBag + pop bc + jr nz, .checkUse + ld b, SUPER_REPEL + push bc + call IsItemInBag + pop bc + jr nz, .checkUse + ld b, MAX_REPEL + push bc + call IsItemInBag + pop bc + jr nz, .checkUse + jr .done +.checkUse + push bc + ld hl, RepelUseAnotherText + call PrintText + call YesNoChoice + pop bc + ld a, [wCurrentMenuItem] + and a + jr nz, .done + ld a, b + ld [wcf91], a ;load item to be used + ld [wd11e], a ;load item so its name can be grabbed + predef GetIndexOfItemInBag + ld a, b + ld [wWhichPokemon], a ; load item index to be deleted when used + call GetItemName ;get the item name into de register + call CopyToStringBuffer ; copy name from de to wcf4b so it shows up in text + call UseItem ;use the item +.done + ret + +RepelUseAnotherText: + text_far _RepelUseAnotherText + text_end diff --git a/home/npc_movement.asm b/home/npc_movement.asm index a3367f9a..efa19420 100644 --- a/home/npc_movement.asm +++ b/home/npc_movement.asm @@ -51,14 +51,4 @@ EndNPCMovementScript:: farjp _EndNPCMovementScript DebugPressedOrHeldB:: -IF DEF(_DEBUG) - ld a, [wd732] - bit 1, a - ret z - ldh a, [hJoyHeld] - bit BIT_B_BUTTON, a - ret nz - ldh a, [hJoyPressed] - bit BIT_B_BUTTON, a -ENDC ret diff --git a/home/text_script.asm b/home/text_script.asm index 458bc555..21140caa 100644 --- a/home/text_script.asm +++ b/home/text_script.asm @@ -200,6 +200,7 @@ DisplayPlayerBlackedOutText:: DisplayRepelWoreOffText:: ld hl, RepelWoreOffText call PrintText + callfar UseAnotherRepel jp AfterDisplayingTextID RepelWoreOffText:: diff --git a/home/trainers.asm b/home/trainers.asm index 22f5513b..718034bc 100644 --- a/home/trainers.asm +++ b/home/trainers.asm @@ -127,10 +127,6 @@ TalkToTrainer:: ; checks if any trainers are seeing the player and wanting to fight CheckFightingMapTrainers:: -IF DEF(_DEBUG) - call DebugPressedOrHeldB - jr nz, .trainerNotEngaging -ENDC call CheckForEngagingTrainers ld a, [wSpriteIndex] cp $ff diff --git a/main.asm b/main.asm index 2cd8fb52..6982d4c0 100644 --- a/main.asm +++ b/main.asm @@ -346,6 +346,7 @@ SECTION "Itemfinder 2", ROMX INCLUDE "engine/items/itemfinder.asm" INCLUDE "engine/menus/league_pc.asm" INCLUDE "engine/events/hidden_items.asm" +INCLUDE "engine/overworld/use_another_repel.asm" SECTION "bank1E", ROMX