This commit is contained in:
parent
321dc60571
commit
a6baf7d189
4 changed files with 99 additions and 2 deletions
|
@ -68,6 +68,7 @@ enemy_src := 2denemy \
|
||||||
nfdutch \
|
nfdutch \
|
||||||
nsshark \
|
nsshark \
|
||||||
ndogfish \
|
ndogfish \
|
||||||
|
nhazard \
|
||||||
enemy
|
enemy
|
||||||
|
|
||||||
projectl_src := projectl
|
projectl_src := projectl
|
||||||
|
|
|
@ -60,6 +60,30 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
128,
|
128,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // NPC_FALLING_ACORN
|
||||||
|
NPC_INIT_FALLING_ACORN,
|
||||||
|
NPC_SENSOR_FALLING_ACORN_USER_CLOSE,
|
||||||
|
NPC_MOVEMENT_STATIC,
|
||||||
|
NPC_MOVEMENT_MODIFIER_NONE,
|
||||||
|
NPC_CLOSE_FALLING_ACORN_FALL,
|
||||||
|
NPC_TIMER_NONE,
|
||||||
|
false,
|
||||||
|
3,
|
||||||
|
128,
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // NPC_FISH_HOOK
|
||||||
|
NPC_INIT_FISH_HOOK,
|
||||||
|
NPC_SENSOR_FISH_HOOK_USER_CLOSE,
|
||||||
|
NPC_MOVEMENT_STATIC,
|
||||||
|
NPC_MOVEMENT_MODIFIER_NONE,
|
||||||
|
NPC_CLOSE_FISH_HOOK_RISE,
|
||||||
|
NPC_TIMER_NONE,
|
||||||
|
false,
|
||||||
|
3,
|
||||||
|
128,
|
||||||
|
},
|
||||||
|
|
||||||
{ // NPC_SMALL_JELLYFISH_1
|
{ // NPC_SMALL_JELLYFISH_1
|
||||||
NPC_INIT_DEFAULT,
|
NPC_INIT_DEFAULT,
|
||||||
NPC_SENSOR_JELLYFISH_USER_CLOSE,
|
NPC_SENSOR_JELLYFISH_USER_CLOSE,
|
||||||
|
@ -435,7 +459,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
|
|
||||||
void CNpc::init()
|
void CNpc::init()
|
||||||
{
|
{
|
||||||
m_type = NPC_SKULL_STOMPER;
|
m_type = NPC_FISH_HOOK;
|
||||||
|
|
||||||
m_heading = m_fireHeading = 0;
|
m_heading = m_fireHeading = 0;
|
||||||
m_movementTimer = 0;
|
m_movementTimer = 0;
|
||||||
|
@ -492,6 +516,7 @@ void CNpc::init()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NPC_INIT_SKULL_STOMPER:
|
case NPC_INIT_SKULL_STOMPER:
|
||||||
|
case NPC_INIT_FALLING_ACORN:
|
||||||
{
|
{
|
||||||
m_heading = m_fireHeading = 1024;
|
m_heading = m_fireHeading = 1024;
|
||||||
|
|
||||||
|
@ -545,6 +570,29 @@ void CNpc::init()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPC_INIT_FISH_HOOK:
|
||||||
|
{
|
||||||
|
m_heading = m_fireHeading = 3072;
|
||||||
|
|
||||||
|
m_npcPath.initPath();
|
||||||
|
|
||||||
|
DVECTOR newPos;
|
||||||
|
|
||||||
|
newPos.vx = 100;
|
||||||
|
newPos.vy = 100;
|
||||||
|
|
||||||
|
m_npcPath.addWaypoint( newPos );
|
||||||
|
|
||||||
|
newPos.vx = 100;
|
||||||
|
newPos.vy = -100;
|
||||||
|
|
||||||
|
m_npcPath.addWaypoint( newPos );
|
||||||
|
|
||||||
|
m_npcPath.setPathType( SINGLE_USE_PATH );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -562,6 +610,9 @@ void CNpc::think(int _frames)
|
||||||
{
|
{
|
||||||
switch ( this->m_controlFunc )
|
switch ( this->m_controlFunc )
|
||||||
{
|
{
|
||||||
|
case NPC_CONTROL_NONE:
|
||||||
|
return;
|
||||||
|
|
||||||
case NPC_CONTROL_MOVEMENT:
|
case NPC_CONTROL_MOVEMENT:
|
||||||
if ( !processSensor() )
|
if ( !processSensor() )
|
||||||
{
|
{
|
||||||
|
@ -815,6 +866,7 @@ bool CNpc::processSensor()
|
||||||
|
|
||||||
case NPC_SENSOR_ANEMONE_USER_CLOSE:
|
case NPC_SENSOR_ANEMONE_USER_CLOSE:
|
||||||
case NPC_SENSOR_EYEBALL_USER_CLOSE:
|
case NPC_SENSOR_EYEBALL_USER_CLOSE:
|
||||||
|
case NPC_SENSOR_FALLING_ACORN_USER_CLOSE:
|
||||||
{
|
{
|
||||||
if ( xDistSqr + yDistSqr < 40000 )
|
if ( xDistSqr + yDistSqr < 40000 )
|
||||||
{
|
{
|
||||||
|
@ -872,6 +924,20 @@ bool CNpc::processSensor()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPC_SENSOR_FISH_HOOK_USER_CLOSE:
|
||||||
|
{
|
||||||
|
if ( xDistSqr + yDistSqr < 400 )
|
||||||
|
{
|
||||||
|
m_controlFunc = NPC_CONTROL_CLOSE;
|
||||||
|
|
||||||
|
return( true );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return( false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return( false );
|
return( false );
|
||||||
}
|
}
|
||||||
|
@ -1129,6 +1195,18 @@ void CNpc::processClose(int _frames)
|
||||||
case NPC_CLOSE_IRON_DOGFISH_ATTACK:
|
case NPC_CLOSE_IRON_DOGFISH_ATTACK:
|
||||||
processCloseIronDogfishAttack( _frames );
|
processCloseIronDogfishAttack( _frames );
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NPC_CLOSE_FALLING_ACORN_FALL:
|
||||||
|
processCloseFallingAcornFall( _frames );
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case NPC_CLOSE_FISH_HOOK_RISE:
|
||||||
|
processCloseFishHookRise( _frames );
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,9 @@ public:
|
||||||
enum NPC_UNIT_TYPE
|
enum NPC_UNIT_TYPE
|
||||||
{
|
{
|
||||||
NPC_SANDY_CHEEKS = 0,
|
NPC_SANDY_CHEEKS = 0,
|
||||||
NPC_SMALL_JELLYFISH_1 = 1,
|
NPC_FALLING_ACORN = 1,
|
||||||
|
NPC_FISH_HOOK,
|
||||||
|
NPC_SMALL_JELLYFISH_1,
|
||||||
NPC_SMALL_JELLYFISH_2,
|
NPC_SMALL_JELLYFISH_2,
|
||||||
NPC_LARGE_JELLYFISH,
|
NPC_LARGE_JELLYFISH,
|
||||||
NPC_ANEMONE_1,
|
NPC_ANEMONE_1,
|
||||||
|
@ -85,10 +87,13 @@ protected:
|
||||||
NPC_INIT_SUB_SHARK,
|
NPC_INIT_SUB_SHARK,
|
||||||
NPC_INIT_FLYING_DUTCHMAN,
|
NPC_INIT_FLYING_DUTCHMAN,
|
||||||
NPC_INIT_IRON_DOGFISH,
|
NPC_INIT_IRON_DOGFISH,
|
||||||
|
NPC_INIT_FALLING_ACORN,
|
||||||
|
NPC_INIT_FISH_HOOK,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_CONTROL_FUNC
|
enum NPC_CONTROL_FUNC
|
||||||
{
|
{
|
||||||
|
NPC_CONTROL_NONE,
|
||||||
NPC_CONTROL_MOVEMENT,
|
NPC_CONTROL_MOVEMENT,
|
||||||
NPC_CONTROL_SHOT,
|
NPC_CONTROL_SHOT,
|
||||||
NPC_CONTROL_CLOSE,
|
NPC_CONTROL_CLOSE,
|
||||||
|
@ -110,6 +115,8 @@ protected:
|
||||||
NPC_SENSOR_SKULL_STOMPER_USER_CLOSE,
|
NPC_SENSOR_SKULL_STOMPER_USER_CLOSE,
|
||||||
NPC_SENSOR_BOOGER_MONSTER_USER_CLOSE,
|
NPC_SENSOR_BOOGER_MONSTER_USER_CLOSE,
|
||||||
NPC_SENSOR_IRON_DOGFISH_USER_CLOSE,
|
NPC_SENSOR_IRON_DOGFISH_USER_CLOSE,
|
||||||
|
NPC_SENSOR_FALLING_ACORN_USER_CLOSE,
|
||||||
|
NPC_SENSOR_FISH_HOOK_USER_CLOSE,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_CLOSE_FUNC
|
enum NPC_CLOSE_FUNC
|
||||||
|
@ -130,6 +137,8 @@ protected:
|
||||||
NPC_CLOSE_SUB_SHARK_ATTACK,
|
NPC_CLOSE_SUB_SHARK_ATTACK,
|
||||||
NPC_CLOSE_FLYING_DUTCHMAN_ATTACK,
|
NPC_CLOSE_FLYING_DUTCHMAN_ATTACK,
|
||||||
NPC_CLOSE_IRON_DOGFISH_ATTACK,
|
NPC_CLOSE_IRON_DOGFISH_ATTACK,
|
||||||
|
NPC_CLOSE_FALLING_ACORN_FALL,
|
||||||
|
NPC_CLOSE_FISH_HOOK_RISE,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_MOVEMENT_FUNC
|
enum NPC_MOVEMENT_FUNC
|
||||||
|
@ -286,6 +295,11 @@ protected:
|
||||||
void processStandardIronDogfishAttack( int _frames );
|
void processStandardIronDogfishAttack( int _frames );
|
||||||
void processCloseIronDogfishAttack( int _frames );
|
void processCloseIronDogfishAttack( int _frames );
|
||||||
|
|
||||||
|
// hazard functions
|
||||||
|
|
||||||
|
void processCloseFallingAcornFall( int _frames );
|
||||||
|
void processCloseFishHookRise( int _frames );
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
static NPC_DATA m_data[NPC_UNIT_TYPE_MAX];
|
static NPC_DATA m_data[NPC_UNIT_TYPE_MAX];
|
||||||
|
|
|
@ -157,6 +157,10 @@ SOURCE=..\..\..\source\enemy\ngpirate.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\enemy\nhazard.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\source\enemy\nmjfish.cpp
|
SOURCE=..\..\..\source\enemy\nmjfish.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
Loading…
Add table
Reference in a new issue