From 9744a422b0f1845860fc00cd9f567d8d22639f41 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 17 Jul 2001 15:40:12 +0000 Subject: [PATCH] --- source/enemy/nssnake.cpp | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/source/enemy/nssnake.cpp b/source/enemy/nssnake.cpp index b30e20847..1ecc0b42f 100644 --- a/source/enemy/nssnake.cpp +++ b/source/enemy/nssnake.cpp @@ -546,6 +546,26 @@ void CNpcSeaSnakeEnemy::processMovement( int _frames ) Pos.vx += moveX; Pos.vy += moveY; + // check for hitting ground + + if ( CGameScene::getCollision()->Get( Pos.vx >> 4, Pos.vy >> 4 ) ) + { + switch ( CGameScene::getCollision()->getCollisionBlock( Pos.vx, Pos.vy ) & COLLISION_TYPE_MASK ) + { + case COLLISION_TYPE_FLAG_SOLID: + { + Pos = oldPos; + m_heading += 1024; + m_heading &= 4095; + + break; + } + + default: + break; + } + } + updateTail( oldPos, _frames ); } @@ -843,6 +863,33 @@ void CNpcSeaSnakeEnemy::processClose( int _frames ) } } + // check for hitting ground + + if ( CGameScene::getCollision()->Get( Pos.vx >> 4, Pos.vy >> 4 ) ) + { + switch ( CGameScene::getCollision()->getCollisionBlock( Pos.vx, Pos.vy ) & COLLISION_TYPE_MASK ) + { + case COLLISION_TYPE_FLAG_SOLID: + { + m_movementTimer = GameState::getOneSecondInFrames(); + + m_controlFunc = NPC_CONTROL_MOVEMENT; + m_timerFunc = NPC_TIMER_ATTACK_DONE; + m_timerTimer = 5 * GameState::getOneSecondInFrames(); + m_sensorFunc = NPC_SENSOR_NONE; + + Pos = oldPos; + m_heading += 1024; + m_heading &= 4095; + + break; + } + + default: + break; + } + } + updateTail( oldPos, _frames ); /*