HitResponse
MrIceBlock::collision_player(Player& player, const CollisionHit& hit)
{
- if(ice_state == ICESTATE_GRABBED)
- return FORCE_MOVE;
-
if(dir == UP) {
return FORCE_MOVE;
}
bool
MrIceBlock::collision_squished(GameObject& object)
{
+ Player* player = dynamic_cast<Player*>(&object);
+ if(player && (player->does_buttjump || player->is_invincible())) {
+ player->bounce(*this);
+ kill_fall();
+ return true;
+ }
+
switch(ice_state) {
case ICESTATE_KICKED:
{
// fall through
case ICESTATE_NORMAL:
{
- Player* player = dynamic_cast<Player*>(&object);
squishcount++;
- if ((squishcount >= MAXSQUISHES) || (player && player->does_buttjump)) {
+ if (squishcount >= MAXSQUISHES) {
kill_fall();
return true;
}
break;
}
- Player* player = dynamic_cast<Player*>(&object);
if (player) player->bounce(*this);
return true;
}
return ice_state == ICESTATE_FLAT;
}
-IMPLEMENT_FACTORY(MrIceBlock, "mriceblock");
-
/* EOF */