by Cacodemon345 » Fri Apr 03, 2020 11:55 am
Now that I look into the source code, P_XYMovement function calls P_BounceActor with "ontop = false" in two places. The only function where I found that function called with "ontop = true" is the main Actor Tick function.
When I used a breakpoint in line 1483 of p_map, I found that the code in PIT_CheckThing only reaches there with the non-bouncing projectile, it does not even reach there with the bouncing project when I used Marisa's bug reproduction example. When that happens, P_BounceActor is called with "ontop = true".
This means that there HAS to be some place in the code which uses the Actor Bounce flag to change something that causes that portion of PIT_CheckThing to be unreachable.
Edit: further testing reveals a oddity: CanCollideWith() is called more than once for the non-bouncing projectile when it does not actually hit, but is only called once when the bouncing projectile actually hits the monster.
Now that I look into the source code, P_XYMovement function calls P_BounceActor with "ontop = false" in two places. The only function where I found that function called with "ontop = true" is the main Actor Tick function.
When I used a breakpoint in line 1483 of p_map, I found that the code in PIT_CheckThing only reaches there with the non-bouncing projectile, it does not even reach there with the bouncing project when I used Marisa's bug reproduction example. When that happens, P_BounceActor is called with "ontop = true".
This means that there HAS to be some place in the code which uses the Actor Bounce flag to change something that causes that portion of PIT_CheckThing to be unreachable.
Edit: further testing reveals a oddity: CanCollideWith() is called more than once for the non-bouncing projectile when it does not actually hit, but is only called once when the bouncing projectile actually hits the monster.