This commit is contained in:
Charles 2001-07-05 14:07:27 +00:00
parent 6003f71e40
commit d837ee7dd0
2 changed files with 89 additions and 11 deletions

View File

@ -43,6 +43,10 @@
#include <sprites.h> #include <sprites.h>
#endif #endif
#ifndef __UTILS_HEADER__
#include "utils\utils.h"
#endif
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -237,7 +241,15 @@ void CNpcFlyingDutchmanEnemy::processClose( int _frames )
} }
else else
{ {
m_state = FLYING_DUTCHMAN_ATTACK_PLAYER; if ( getRnd() % 2 )
{
m_state = FLYING_DUTCHMAN_ATTACK_PLAYER;
}
else
{
m_state = FLYING_DUTCHMAN_CHARGE_PLAYER_START;
}
m_fadeDown = false; m_fadeDown = false;
} }
@ -300,7 +312,7 @@ void CNpcFlyingDutchmanEnemy::processClose( int _frames )
else else
{ {
m_state = FLYING_DUTCHMAN_RETURN; m_state = FLYING_DUTCHMAN_RETURN;
m_timerTimer = GameState::getOneSecondInFrames(); m_timerTimer = 2 * GameState::getOneSecondInFrames();
} }
} }
} }
@ -318,6 +330,68 @@ void CNpcFlyingDutchmanEnemy::processClose( int _frames )
break; break;
} }
case FLYING_DUTCHMAN_CHARGE_PLAYER_START:
{
if ( m_fadeVal == 128 )
{
// charge at player
if ( playerXDist > 0 )
{
m_heading = 0;
}
else
{
m_heading = 2048;
}
m_state = FLYING_DUTCHMAN_CHARGE_PLAYER;
m_timerTimer = GameState::getOneSecondInFrames();
}
else
{
if ( !m_animPlaying )
{
m_animPlaying = true;
m_animNo = m_data[m_type].moveAnim;
m_frame = 0;
}
}
break;
}
case FLYING_DUTCHMAN_CHARGE_PLAYER:
{
if ( m_timerTimer > 0 )
{
if ( !m_animPlaying )
{
m_animNo = m_data[m_type].moveAnim;
m_animPlaying = true;
m_frame = 0;
}
if ( m_heading )
{
Pos.vx -= _frames * m_speed * 2;
}
else
{
Pos.vx += _frames * m_speed * 2;
}
m_timerTimer -= _frames;
}
else
{
m_state = FLYING_DUTCHMAN_RETURN;
}
break;
}
case FLYING_DUTCHMAN_RETURN: case FLYING_DUTCHMAN_RETURN:
{ {
if ( m_timerTimer > 0 ) if ( m_timerTimer > 0 )
@ -484,8 +558,11 @@ void CNpcFlyingDutchmanEnemy::processShotRecoil( int _frames )
if ( !m_animPlaying ) if ( !m_animPlaying )
{ {
m_controlFunc = NPC_CONTROL_MOVEMENT; m_controlFunc = NPC_CONTROL_MOVEMENT;
m_fadeDown = true;
m_movementTimer = GameState::getOneSecondInFrames() * 2; m_movementTimer = GameState::getOneSecondInFrames() * 2;
m_inRange = false;
m_fadeDown = true;
m_timerTimer = 0;
m_fireCount = 0;
} }
} }
@ -602,12 +679,8 @@ void CNpcFlyingDutchmanEnemy::collidedWith(CThing *_thisThing)
{ {
player->justButtBouncedABadGuy(); player->justButtBouncedABadGuy();
} }
m_controlFunc = NPC_CONTROL_MOVEMENT; m_controlFunc = NPC_CONTROL_SHOT;
m_movementTimer = GameState::getOneSecondInFrames() * 2; m_state = NPC_GENERIC_HIT_CHECK_HEALTH;
m_inRange = false;
m_fadeDown = true;
m_timerTimer = 0;
m_fireCount = 0;
drawAttackEffect(); drawAttackEffect();
} }
@ -644,12 +717,15 @@ u8 CNpcFlyingDutchmanEnemy::hasBeenAttacked()
{ {
if ( m_controlFunc != NPC_CONTROL_SHOT ) if ( m_controlFunc != NPC_CONTROL_SHOT )
{ {
m_controlFunc = NPC_CONTROL_MOVEMENT; m_controlFunc = NPC_CONTROL_SHOT;
m_state = NPC_GENERIC_HIT_CHECK_HEALTH;
/*m_controlFunc = NPC_CONTROL_MOVEMENT;
m_movementTimer = GameState::getOneSecondInFrames() * 2; m_movementTimer = GameState::getOneSecondInFrames() * 2;
m_inRange = false; m_inRange = false;
m_fadeDown = true; m_fadeDown = true;
m_timerTimer = 0; m_timerTimer = 0;
m_fireCount = 0; m_fireCount = 0;*/
} }
} }

View File

@ -41,6 +41,8 @@ protected:
//FLYING_DUTCHMAN_ATTACK_PLAYER_3, //FLYING_DUTCHMAN_ATTACK_PLAYER_3,
FLYING_DUTCHMAN_GOTO_PLAYER = 0, FLYING_DUTCHMAN_GOTO_PLAYER = 0,
FLYING_DUTCHMAN_ATTACK_PLAYER = 1, FLYING_DUTCHMAN_ATTACK_PLAYER = 1,
FLYING_DUTCHMAN_CHARGE_PLAYER_START,
FLYING_DUTCHMAN_CHARGE_PLAYER,
FLYING_DUTCHMAN_RETURN, FLYING_DUTCHMAN_RETURN,
}; };