This commit is contained in:
parent
78ac121e9e
commit
de136cdcf9
5 changed files with 86 additions and 39 deletions
|
@ -67,6 +67,7 @@ enemy_src := 2denemy \
|
||||||
nmjfish \
|
nmjfish \
|
||||||
nfdutch \
|
nfdutch \
|
||||||
nsshark \
|
nsshark \
|
||||||
|
ndogfish \
|
||||||
enemy
|
enemy
|
||||||
|
|
||||||
projectl_src := projectl
|
projectl_src := projectl
|
||||||
|
|
|
@ -418,12 +418,24 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
256,
|
256,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // NPC_IRON_DOGFISH
|
||||||
|
NPC_INIT_IRON_DOGFISH,
|
||||||
|
NPC_SENSOR_NONE,
|
||||||
|
NPC_MOVEMENT_IRON_DOGFISH,
|
||||||
|
NPC_MOVEMENT_MODIFIER_NONE,
|
||||||
|
NPC_CLOSE_IRON_DOGFISH_ATTACK,
|
||||||
|
NPC_TIMER_NONE,
|
||||||
|
false,
|
||||||
|
3,
|
||||||
|
2048,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void CNpc::init()
|
void CNpc::init()
|
||||||
{
|
{
|
||||||
m_type = NPC_SUB_SHARK;
|
m_type = NPC_IRON_DOGFISH;
|
||||||
|
|
||||||
m_heading = m_fireHeading = 0;
|
m_heading = m_fireHeading = 0;
|
||||||
m_movementTimer = 0;
|
m_movementTimer = 0;
|
||||||
|
@ -525,6 +537,14 @@ void CNpc::init()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPC_INIT_IRON_DOGFISH:
|
||||||
|
{
|
||||||
|
m_state = IRON_DOGFISH_THUMP_1;
|
||||||
|
m_extendDir = EXTEND_RIGHT;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -793,19 +813,6 @@ bool CNpc::processSensor()
|
||||||
}
|
}
|
||||||
|
|
||||||
case NPC_SENSOR_ANEMONE_USER_CLOSE:
|
case NPC_SENSOR_ANEMONE_USER_CLOSE:
|
||||||
{
|
|
||||||
if ( xDistSqr + yDistSqr < 40000 )
|
|
||||||
{
|
|
||||||
m_controlFunc = NPC_CONTROL_CLOSE;
|
|
||||||
|
|
||||||
return( true );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return( false );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
case NPC_SENSOR_EYEBALL_USER_CLOSE:
|
case NPC_SENSOR_EYEBALL_USER_CLOSE:
|
||||||
{
|
{
|
||||||
if ( xDistSqr + yDistSqr < 40000 )
|
if ( xDistSqr + yDistSqr < 40000 )
|
||||||
|
@ -850,6 +857,20 @@ bool CNpc::processSensor()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPC_SENSOR_IRON_DOGFISH_USER_CLOSE:
|
||||||
|
{
|
||||||
|
if ( xDistSqr + yDistSqr < 10000 )
|
||||||
|
{
|
||||||
|
m_controlFunc = NPC_CONTROL_CLOSE;
|
||||||
|
|
||||||
|
return( true );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return( false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return( false );
|
return( false );
|
||||||
}
|
}
|
||||||
|
@ -985,6 +1006,13 @@ void CNpc::processMovement(int _frames)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPC_MOVEMENT_IRON_DOGFISH:
|
||||||
|
{
|
||||||
|
processIronDogfishMovement( _frames );
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1097,6 +1125,9 @@ void CNpc::processClose(int _frames)
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NPC_CLOSE_IRON_DOGFISH_ATTACK:
|
||||||
|
processCloseIronDogfishAttack( _frames );
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,7 @@ public:
|
||||||
NPC_MOTHER_JELLYFISH,
|
NPC_MOTHER_JELLYFISH,
|
||||||
NPC_SUB_SHARK,
|
NPC_SUB_SHARK,
|
||||||
NPC_FLYING_DUTCHMAN,
|
NPC_FLYING_DUTCHMAN,
|
||||||
|
NPC_IRON_DOGFISH,
|
||||||
NPC_UNIT_TYPE_MAX,
|
NPC_UNIT_TYPE_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -83,6 +84,7 @@ protected:
|
||||||
NPC_INIT_MOTHER_JELLYFISH,
|
NPC_INIT_MOTHER_JELLYFISH,
|
||||||
NPC_INIT_SUB_SHARK,
|
NPC_INIT_SUB_SHARK,
|
||||||
NPC_INIT_FLYING_DUTCHMAN,
|
NPC_INIT_FLYING_DUTCHMAN,
|
||||||
|
NPC_INIT_IRON_DOGFISH,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_CONTROL_FUNC
|
enum NPC_CONTROL_FUNC
|
||||||
|
@ -107,6 +109,7 @@ protected:
|
||||||
NPC_SENSOR_EYEBALL_USER_CLOSE,
|
NPC_SENSOR_EYEBALL_USER_CLOSE,
|
||||||
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,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_CLOSE_FUNC
|
enum NPC_CLOSE_FUNC
|
||||||
|
@ -126,6 +129,7 @@ protected:
|
||||||
NPC_CLOSE_MOTHER_JELLYFISH_ATTACK,
|
NPC_CLOSE_MOTHER_JELLYFISH_ATTACK,
|
||||||
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,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_MOVEMENT_FUNC
|
enum NPC_MOVEMENT_FUNC
|
||||||
|
@ -137,6 +141,7 @@ protected:
|
||||||
NPC_MOVEMENT_MOTHER_JELLYFISH,
|
NPC_MOVEMENT_MOTHER_JELLYFISH,
|
||||||
NPC_MOVEMENT_SUB_SHARK,
|
NPC_MOVEMENT_SUB_SHARK,
|
||||||
NPC_MOVEMENT_FLYING_DUTCHMAN,
|
NPC_MOVEMENT_FLYING_DUTCHMAN,
|
||||||
|
NPC_MOVEMENT_IRON_DOGFISH,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_MOVEMENT_MODIFIER_FUNC
|
enum NPC_MOVEMENT_MODIFIER_FUNC
|
||||||
|
@ -160,6 +165,13 @@ protected:
|
||||||
MOTHER_JELLYFISH_ATTACK_PLAYER,
|
MOTHER_JELLYFISH_ATTACK_PLAYER,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum NPC_SUB_SHARK_STATE
|
||||||
|
{
|
||||||
|
SUB_SHARK_CYCLE = 0,
|
||||||
|
SUB_SHARK_MINE_1 = 1,
|
||||||
|
SUB_SHARK_MINE_2,
|
||||||
|
};
|
||||||
|
|
||||||
enum NPC_FLYING_DUTCHMAN_STATE
|
enum NPC_FLYING_DUTCHMAN_STATE
|
||||||
{
|
{
|
||||||
FLYING_DUTCHMAN_ATTACK_PLAYER_1 = 0,
|
FLYING_DUTCHMAN_ATTACK_PLAYER_1 = 0,
|
||||||
|
@ -167,11 +179,13 @@ protected:
|
||||||
FLYING_DUTCHMAN_ATTACK_PLAYER_3,
|
FLYING_DUTCHMAN_ATTACK_PLAYER_3,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPC_SUB_SHARK_STATE
|
enum NPC_IRON_DOGFISH_STATE
|
||||||
{
|
{
|
||||||
SUB_SHARK_CYCLE = 0,
|
IRON_DOGFISH_THUMP_1 = 0,
|
||||||
SUB_SHARK_MINE_1 = 1,
|
IRON_DOGFISH_LASER_EYE_1 = 1,
|
||||||
SUB_SHARK_MINE_2,
|
IRON_DOGFISH_THUMP_2,
|
||||||
|
IRON_DOGFISH_ROLL,
|
||||||
|
IRON_DOGFISH_LASER_EYE_2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -256,15 +270,21 @@ protected:
|
||||||
void processMotherJellyfishMovement( int _frames );
|
void processMotherJellyfishMovement( int _frames );
|
||||||
void processCloseMotherJellyfishAttack( int _frames );
|
void processCloseMotherJellyfishAttack( int _frames );
|
||||||
|
|
||||||
|
// sub shark functions
|
||||||
|
|
||||||
|
void processSubSharkMovement( int _frames );
|
||||||
|
void processCloseSubSharkAttack( int _frames );
|
||||||
|
|
||||||
// flying dutchman functions
|
// flying dutchman functions
|
||||||
|
|
||||||
void processFlyingDutchmanMovement( int _frames );
|
void processFlyingDutchmanMovement( int _frames );
|
||||||
void processCloseFlyingDutchmanAttack( int _frames );
|
void processCloseFlyingDutchmanAttack( int _frames );
|
||||||
|
|
||||||
// sub shark functions
|
// iron dogfish functions
|
||||||
|
|
||||||
void processSubSharkMovement( int _frames );
|
void processIronDogfishMovement( int _frames );
|
||||||
void processCloseSubSharkAttack( int _frames );
|
void processStandardIronDogfishAttack( int _frames );
|
||||||
|
void processCloseIronDogfishAttack( int _frames );
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
|
|
|
@ -92,19 +92,19 @@ void CNpc::processCloseSubSharkAttack( int _frames )
|
||||||
s32 xDist = playerPos.vx - Pos.vx;
|
s32 xDist = playerPos.vx - Pos.vx;
|
||||||
s32 xDistSqr = xDist * xDist;
|
s32 xDistSqr = xDist * xDist;
|
||||||
|
|
||||||
|
if ( xDist > 0 )
|
||||||
|
{
|
||||||
|
m_extendDir = EXTEND_RIGHT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_extendDir = EXTEND_LEFT;
|
||||||
|
}
|
||||||
|
|
||||||
switch( m_state )
|
switch( m_state )
|
||||||
{
|
{
|
||||||
case SUB_SHARK_MINE_1:
|
case SUB_SHARK_MINE_1:
|
||||||
{
|
{
|
||||||
if ( xDist > 0 )
|
|
||||||
{
|
|
||||||
m_extendDir = EXTEND_RIGHT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_extendDir = EXTEND_LEFT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( xDistSqr > 100 )
|
if ( xDistSqr > 100 )
|
||||||
{
|
{
|
||||||
processGenericGotoTarget( _frames, xDist, 0, m_data[m_type].speed );
|
processGenericGotoTarget( _frames, xDist, 0, m_data[m_type].speed );
|
||||||
|
@ -124,15 +124,6 @@ void CNpc::processCloseSubSharkAttack( int _frames )
|
||||||
|
|
||||||
case SUB_SHARK_MINE_2:
|
case SUB_SHARK_MINE_2:
|
||||||
{
|
{
|
||||||
if ( xDist > 0 )
|
|
||||||
{
|
|
||||||
m_extendDir = EXTEND_RIGHT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_extendDir = EXTEND_LEFT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( xDistSqr > 100 )
|
if ( xDistSqr > 100 )
|
||||||
{
|
{
|
||||||
processGenericGotoTarget( _frames, xDist, 0, m_data[m_type].speed );
|
processGenericGotoTarget( _frames, xDist, 0, m_data[m_type].speed );
|
||||||
|
|
|
@ -137,6 +137,10 @@ SOURCE=..\..\..\source\enemy\nclam.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\enemy\ndogfish.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\source\enemy\neyeball.cpp
|
SOURCE=..\..\..\source\enemy\neyeball.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue