shithub: pokecrystal

Download patch

ref: b764a3a84d836768c385e9131ab458e0edfe0716
parent: 40c899162b5501f14905893b9780e01e4b6f6ba7
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Tue Aug 30 13:06:12 EDT 2022

Document fix for fishing and Surfing on top of NPCs

Fixes #994

--- a/docs/bugs_and_glitches.md
+++ b/docs/bugs_and_glitches.md
@@ -66,6 +66,7 @@
   - [`LoadMetatiles` wraps around past 128 blocks](#loadmetatiles-wraps-around-past-128-blocks)
   - [Surfing directly across a map connection does not load the new map](#surfing-directly-across-a-map-connection-does-not-load-the-new-map)
   - [Swimming NPCs aren't limited by their movement radius](#swimming-npcs-arent-limited-by-their-movement-radius)
+  - [You can Surf and fish on top of NPCs](#you-can-surf-and-fish-on-top-of-npcs)
   - [Pokémon deposited in the Day-Care might lose experience](#pok%C3%A9mon-deposited-in-the-day-care-might-lose-experience)
 - [Graphics](#graphics)
   - [In-battle “`…`” ellipsis is too high](#in-battle--ellipsis-is-too-high)
@@ -1657,11 +1658,64 @@
 ```
 
 
+### You can Surf and fish on top of NPCs
+
+**Fix**: Edit [engine/events/overworld.asm](https://github.com/pret/pokecrystal/blob/master/engine/events/overworld.asm):
+
+```diff
+ FishFunction:
+ ...
+
+ .TryFish:
+ 	ld a, [wPlayerState]
+ 	cp PLAYER_SURF
+ 	jr z, .fail
+ 	cp PLAYER_SURF_PIKA
+ 	jr z, .fail
++	call GetFacingObject
++	jr nc, .fail
+ 	call GetFacingTileCoord
+ 	call GetTileCollision
+ 	cp WATER_TILE
+ 	jr z, .facingwater
+```
+
+```diff
+ SurfFunction:
+ ...
+
+ .TrySurf:
+ 	ld de, ENGINE_FOGBADGE
+ 	call CheckBadge
+ 	jr c, .nofogbadge
+ 	ld hl, wBikeFlags
+ 	bit BIKEFLAGS_ALWAYS_ON_BIKE_F, [hl]
+ 	jr nz, .cannotsurf
+ 	ld a, [wPlayerState]
+ 	cp PLAYER_SURF
+ 	jr z, .alreadyfail
+ 	cp PLAYER_SURF_PIKA
+ 	jr z, .alreadyfail
++	call GetFacingObject
++	jr nc, .cannotsurf
+ 	call GetFacingTileCoord
+ 	call GetTileCollision
+ 	cp WATER_TILE
+ 	jr nz, .cannotsurf
+ 	call CheckDirection
+ 	jr c, .cannotsurf
+-	farcall CheckFacingObject
+-	jr c, .cannotsurf
+ 	ld a, $1
+ 	ret
+```
+
+
 ### Pokémon deposited in the Day-Care might lose experience
 
 When a Pokémon is withdrawn from the Day-Care, its Exp. Points are reset to the minimum required for its level. This means that if it hasn't gained any levels, it may lose experience.
 
-**Fix**: Edit `RetrieveBreedmon` in [engine/pokemon/move_mon.asm](https://github.com/pret/pokecrystal/blob/master/engine/pokemon/move_mon.asm):
+**Fix:** Edit `RetrieveBreedmon` in [engine/pokemon/move_mon.asm](https://github.com/pret/pokecrystal/blob/master/engine/pokemon/move_mon.asm):
 
 ```diff
  RetrieveBreedmon: