supertux
supertux copied to clipboard
Fix granito bugs
closes #2796
TODO:
- [x] Tux cannot unduck in front of Granito
- [x] Rock Rolling and Granito don't mix (gets force pushed out of Granito hitbox)
- [x] Tux falls off Granito when going up (and maybe down?) a slope
- [x] Granito becomes a conveyor belt
- [x] Granito set to type "Standing" when pushed by bomb explosion never resets speed (might be better to not have them be push-able at all)
- [x] Big Tux jittering on Granito while standing on them
- [x] Granito can walks/falls through bricks+heavy bricks+rocks
- [x] Sitting Granito waves at player and remains standing afterwards (should not wave at all when sitting)
This feels forgotten about. What was the status on this?
Just so we don't forget to fix this bug - Granito can walk through bricks+heavy bricks which is not good. They also walk/fall through rocks.
Plays walking animation when landing/staying on a slope
Can't reproduce this one for whatever reason
Rock Rolling and Granito don't mix (gets force pushed out of Granito hitbox)
This one is really hard to pinpoint. Seems to be an object unisolid hitbox issue. I've been using giant granito to test this. Things to note:
collisionis not called in GiantGranito. Can't confirm if it is in Player (but it probably isn't)- The rock rolling is implemented in a very strange way. When an enemy hits the top of the hitbox while rolling it slowly sinks down until just randomly dying. I don't see anywhere in the code where it says "if rock and going at high speed then kill enemy"
- Despite the collision event not being called,
CollisionSystem::collision_static/CollisionSystem::collision_static_constraintsandCollisionSystem::collision_objectboth change tux's position in some way.
Big Tux jittering on Granito while standing on them
Very inconsistent bug. Feels like a floating point error.
- The rock rolling is implemented in a very strange way. When an enemy hits the top of the hitbox while rolling it slowly sinks down until just randomly dying. I don't see anywhere in the code where it says "if rock and going at high speed then kill enemy"
Could this be the line you are looking for? https://github.com/SuperTux/supertux/blob/0928a4fe915337755f2dc6738d091d0f585d3d9e/src/object/player.cpp#L850 The flag for „rock rolling“ is m_stone.
Could this be the line you are looking for?
In theory this only kills enemies from below. I'll try playing around with that.
The flag for „rock rolling“ is m_stone.
I know that.
Big Tux jittering on Granito while standing on them
According to my tests this has been magically fixed in this PR?