mirror of
				https://github.com/thornAvery/kep-hack.git
				synced 2025-11-04 20:51:02 +13:00 
			
		
		
		
	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:
		
							parent
							
								
									2d24f19ba6
								
							
						
					
					
						commit
						f675c1ad9b
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,10 @@ _PlayerBlackedOutText::
 | 
			
		|||
_RepelWoreOffText::
 | 
			
		||||
	text "REPEL's effect"
 | 
			
		||||
	line "wore off."
 | 
			
		||||
	prompt
 | 
			
		||||
 | 
			
		||||
_RepelUseAnotherText::
 | 
			
		||||
	text "Use another?"
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
_PokemartBuyingGreetingText::
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										41
									
								
								engine/overworld/use_another_repel.asm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								engine/overworld/use_another_repel.asm
									
									
									
									
									
										Normal 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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -200,6 +200,7 @@ DisplayPlayerBlackedOutText::
 | 
			
		|||
DisplayRepelWoreOffText::
 | 
			
		||||
	ld hl, RepelWoreOffText
 | 
			
		||||
	call PrintText
 | 
			
		||||
	callfar UseAnotherRepel
 | 
			
		||||
	jp AfterDisplayingTextID
 | 
			
		||||
 | 
			
		||||
RepelWoreOffText::
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue