This commit is contained in:
Charles 2001-07-03 15:02:50 +00:00
parent 9f9c74bd97
commit 02829c7404
3 changed files with 62 additions and 55 deletions

View file

@ -82,7 +82,7 @@ void CNpcMotherJellyfishEnemy::postInit()
targetPos = Pos; targetPos = Pos;
m_movementTimer = GameState::getOneSecondInFrames() * 5; m_movementTimer = GameState::getOneSecondInFrames() * 2;
m_pulsateTimer = GameState::getOneSecondInFrames(); m_pulsateTimer = GameState::getOneSecondInFrames();
m_renderScale = 2048 + ( ( ( 4096 - 2048 ) * m_health ) / m_data[m_type].initHealth ); m_renderScale = 2048 + ( ( ( 4096 - 2048 ) * m_health ) / m_data[m_type].initHealth );
@ -188,7 +188,7 @@ void CNpcMotherJellyfishEnemy::processMovement( int _frames )
projectile->setSpeed( 6 ); projectile->setSpeed( 6 );
projectile->setXScale( 8192 ); projectile->setXScale( 8192 );
m_movementTimer = GameState::getOneSecondInFrames() * 5; m_movementTimer = GameState::getOneSecondInFrames() * 2;
m_pulsateTimer = GameState::getOneSecondInFrames(); m_pulsateTimer = GameState::getOneSecondInFrames();
m_pauseTimer = m_maxPauseTimer; m_pauseTimer = m_maxPauseTimer;
@ -693,87 +693,94 @@ void CNpcMotherJellyfishEnemy::processShot( int _frames )
void CNpcMotherJellyfishEnemy::collidedWith(CThing *_thisThing) void CNpcMotherJellyfishEnemy::collidedWith(CThing *_thisThing)
{ {
if ( m_state == MOTHER_JELLYFISH_CYCLE ) switch( m_state )
{ {
if ( m_isActive && !m_isCaught && !m_isDying ) case MOTHER_JELLYFISH_CYCLE:
case MOTHER_JELLYFISH_STRAFE_START:
case MOTHER_JELLYFISH_STRAFE:
{ {
switch(_thisThing->getThingType()) if ( m_isActive && !m_isCaught && !m_isDying )
{ {
case TYPE_PLAYER: switch(_thisThing->getThingType())
{ {
CPlayer *player = (CPlayer *) _thisThing; case TYPE_PLAYER:
ATTACK_STATE playerState = player->getAttackState();
if(playerState==ATTACK_STATE__NONE)
{ {
if ( !player->isRecoveringFromHit() ) CPlayer *player = (CPlayer *) _thisThing;
ATTACK_STATE playerState = player->getAttackState();
if(playerState==ATTACK_STATE__NONE)
{ {
switch( m_data[m_type].detectCollision ) if ( !player->isRecoveringFromHit() )
{ {
case DETECT_NO_COLLISION: switch( m_data[m_type].detectCollision )
{ {
// ignore case DETECT_NO_COLLISION:
{
// ignore
break; break;
} }
case DETECT_ALL_COLLISION: case DETECT_ALL_COLLISION:
{ {
m_oldControlFunc = m_controlFunc; m_oldControlFunc = m_controlFunc;
m_controlFunc = NPC_CONTROL_COLLISION; m_controlFunc = NPC_CONTROL_COLLISION;
processUserCollision( _thisThing ); processUserCollision( _thisThing );
break; break;
} }
case DETECT_ATTACK_COLLISION_GENERIC: case DETECT_ATTACK_COLLISION_GENERIC:
{ {
processAttackCollision(); processAttackCollision();
processUserCollision( _thisThing ); processUserCollision( _thisThing );
break; break;
}
} }
} }
} }
} else if ( m_invulnerableTimer <= 0 )
else if ( m_invulnerableTimer <= 0 )
{
// player is attacking, respond appropriately
if ( m_controlFunc != NPC_CONTROL_SHOT )
{ {
if(playerState==ATTACK_STATE__BUTT_BOUNCE) // player is attacking, respond appropriately
if ( m_controlFunc != NPC_CONTROL_SHOT )
{ {
player->justButtBouncedABadGuy(); if(playerState==ATTACK_STATE__BUTT_BOUNCE)
{
player->justButtBouncedABadGuy();
}
m_controlFunc = NPC_CONTROL_SHOT;
m_state = NPC_GENERIC_HIT_CHECK_HEALTH;
drawAttackEffect();
} }
m_controlFunc = NPC_CONTROL_SHOT;
m_state = NPC_GENERIC_HIT_CHECK_HEALTH;
drawAttackEffect();
} }
break;
} }
break; case TYPE_ENEMY:
}
case TYPE_ENEMY:
{
CNpcEnemy *enemy = (CNpcEnemy *) _thisThing;
if ( canCollideWithEnemy() && enemy->canCollideWithEnemy() )
{ {
processEnemyCollision( _thisThing ); CNpcEnemy *enemy = (CNpcEnemy *) _thisThing;
if ( canCollideWithEnemy() && enemy->canCollideWithEnemy() )
{
processEnemyCollision( _thisThing );
}
break;
} }
break; default:
ASSERT(0);
break;
} }
default:
ASSERT(0);
break;
} }
break;
} }
} }
} }