Gen 5 Repel system

Also used in PureRGB. Gives the player the option to use another Repel after the last one runs out.

I had to remove some debug features in order to fit it in, but it won't have an effect on the regular game. Hopefully.
This commit is contained in:
Martha Schilling 2024-04-15 13:01:52 +01:00
parent 2d24f19ba6
commit f675c1ad9b
8 changed files with 68 additions and 14 deletions

View file

@ -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

View file

@ -20,6 +20,10 @@ _PlayerBlackedOutText::
_RepelWoreOffText::
text "REPEL's effect"
line "wore off."
prompt
_RepelUseAnotherText::
text "Use another?"
done
_PokemartBuyingGreetingText::

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -200,6 +200,7 @@ DisplayPlayerBlackedOutText::
DisplayRepelWoreOffText::
ld hl, RepelWoreOffText
call PrintText
callfar UseAnotherRepel
jp AfterDisplayingTextID
RepelWoreOffText::

View file

@ -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

View file

@ -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