diff options
| -rwxr-xr-x | engine/npc_movement.asm | 2 | ||||
| -rwxr-xr-x | event/overworld.asm | 189 | ||||
| -rw-r--r-- | main.asm | 33 | 
3 files changed, 217 insertions, 7 deletions
| diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm index 306066ae..e776402a 100755 --- a/engine/npc_movement.asm +++ b/engine/npc_movement.asm @@ -205,7 +205,7 @@ Function7080: ; 7080 (1:7080)  	scf  	ret -CheckFacingObject +CheckFacingObject:  	call GetFacingTileCoord  	call CheckCounterTile  	jr nz, .asm_70d0 diff --git a/event/overworld.asm b/event/overworld.asm index 93fa99fd..3f39bccf 100755 --- a/event/overworld.asm +++ b/event/overworld.asm @@ -1184,10 +1184,193 @@ Text_AskWhirlpool: ; ce7b  	text_jump Text_AskWhirlpool_  	db "@" -HeadbuttFunction: ; ce80 +HeadbuttFunction: +	call TryHeadbuttFromMenu +	and $7f +	ld [wFieldMoveSucceeded], a +	ret + +TryHeadbuttFromMenu: ; ce89 (3:4e89) +	call GetFacingTileCoord +	call CheckHeadbuttTreeTile +	jr nz, .asm_ce9a +	ld hl, HeadbuttFromMenuScript ; $4eaa +	call QueueScript +	ld a, $81 +	ret + +.asm_ce9a +	call FieldMoveFailed +	ld a, $80 +	ret + +; ceaa +Text_DidAHeadbutt: +	text_jump Text_DidAHeadbutt_ +	db "@" + +Text_NothingFromHeadbutt: +	text_jump Text_NothingFromHeadbutt_ +	db "@" + +HeadbuttFromMenuScript: +	reloadmappart +	special UpdateTimePals +HeadbuttScript: +	callasm FieldMoveGetPartyNick +	writetext Text_DidAHeadbutt +	reloadmappart +	callasm ShakeHeadbuttTree +	callasm TreeMonEncounter +	iffalse .nope_nothing +	closetext +	randomwildmon +	startbattle +	reloadmapafterbattle +	end + +.nope_nothing: +	writetext Text_NothingFromHeadbutt +	waitbutton +	closetext +	end + +TryHeadbuttOW: ; cecc +	ld d, HEADBUTT +	call FieldMovePartyCheck +	jr c, .asm_cedd +	ld a, BANK(AskHeadbuttScript) +	ld hl, AskHeadbuttScript ; $4edf +	call CallScript +	scf +	ret + +.asm_cedd +	xor a +	ret + +AskHeadbuttScript: +	opentext +	writetext Text_AskHeadbutt +	yesorno +	iftrue HeadbuttScript +	closetext +	end + +Text_AskHeadbutt: ; cee9 +	text_jump Text_AskHeadbutt_ +	db "@" + +	call TryRockSmashFromMenu +	and $7f +	ld [wFieldMoveSucceeded], a +	ret + +TryRockSmashFromMenu: ; cef7 (3:4ef7) +	call GetFacingObject +	jr c, .asm_cf0a +	ld a, d +	cp $18 +	jr nz, .asm_cf0a +	ld hl, RockSmashFromMenuScript ; $4f31 +	call QueueScript +	ld a, $81 +	ret + +.asm_cf0a +	call FieldMoveFailed +	ld a, $80 +	ret + +GetFacingObject: ; cf10 (3:4f10) +	callba CheckFacingObject +	jr nc, .asm_cf2f +	ld a, [hObjectStructIndexBuffer] +	call GetObjectStruct +	ld hl, $1 +	add hl, bc +	ld a, [hl] +	ld [hLastTalked], a +	call GetMapObject +	ld hl, $4 +	add hl, bc +	ld a, [hl] +	ld d, a +	and a +	ret + +.asm_cf2f +	scf +	ret + +RockSmashFromMenuScript: ; cf31 +	reloadmappart +	special UpdateTimePals +RockSmashScript: +	callasm FieldMoveGetPartyNick +	writetext Text_UsedRockSmash +	closetext +	special WaitSFX +	playsound SFX_STRENGTH +	earthquake 84 +	applymovement2 RockSmashMovementData +	disappear -2 +	callasm RockMonEncounter +	copybytetovar wd117 +	iffalse .skip_battle +	randomwildmon +	startbattle +	reloadmapafterbattle +.skip_battle +	end + +RockSmashMovementData: +	rock_smash 10 +	step_end + +Text_UsedRockSmash: +	text_jump Text_UsedRockSmash_ +	db "@" +; cf60 +AskRockSmashScript: +	callasm TryRockSmashOW +	if_equal 1, .fail +	opentext +	writetext Text_AskRockSmash +	yesorno +	iftrue RockSmashScript +	closetext +	end +.fail +	jumptext Text_MayBeBreakable + +Text_MayBeBreakable: +	text_jump Text_MayBeBreakable_ +	db "@" + +Text_AskRockSmash: +	text_jump Text_AskRockSmash_ +	db "@" + +TryRockSmashOW: ; cf7f +	ld d, ROCK_SMASH +	call FieldMovePartyCheck +	jr nc, .asm_cf8a +	ld a, $1 +	jr .asm_cf8d + +.asm_cf8a +	xor a +	jr .asm_cf8d + +.asm_cf8d +	ld [wScriptVar], a +	ret + +FishingRodFunction: ; cf91  IF DEF(GOLD) -	dr $ce80, $d1e2 +	dr $cf91, $d1e2  ENDC  IF DEF(SILVER) -	dr $ce7e, $d1e0 +	dr $cf8f, $d1e0  ENDC @@ -972,7 +972,10 @@ PlayWhirlpoolSound:  	dr $8ca5e, $8ca6b  BlindingFlash: -	dr $8ca6b, $8cbb8 +	dr $8ca6b, $8ca8e + +ShakeHeadbuttTree: +	dr $8ca8e, $8cbb8  OWCutAnimation:  	dr $8cbb8, $8cd65 @@ -1088,7 +1091,13 @@ SECTION "bank2d", ROMX, BANK[$2d]  	dr $b4000, $b8000  SECTION "bank2e", ROMX, BANK[$2e] -	dr $b8000, $bc000 +	dr $b8000, $ba378 + +TreeMonEncounter: +	dr $ba378, $ba3a1 + +RockMonEncounter: +	dr $ba3a1, $bc000  SECTION "bank2f", ROMX, BANK[$2f]  	dr $bc000, $c0000 @@ -1430,7 +1439,25 @@ Text_MightyWhirlpool_::  	dr $1941ec, $194225  Text_AskWhirlpool_:: -	dr $194225, $195610 +	dr $194225, $194258 + +Text_DidAHeadbutt_:: +	dr $194258, $19426d + +Text_NothingFromHeadbutt_:: +	dr $19426d, $19427d + +Text_AskHeadbutt_:: +	dr $19427d, $1942b1 + +Text_UsedRockSmash_:: +	dr $1942b1, $1942c7 + +Text_MayBeBreakable_:: +	dr $1942c7, $1942e8 + +Text_AskRockSmash_:: +	dr $1942e8, $195610  ClockTimeUnknownText_:: ; 195610  	dr $195610, $195624 | 
