This commit is contained in:
Charles 2001-04-05 19:03:55 +00:00
parent d242868b13
commit 2b7bbbf467
3 changed files with 143 additions and 1 deletions

View file

@ -568,7 +568,6 @@ void CNpcEnemy::shutdown()
m_positionHistory = NULL; m_positionHistory = NULL;
// temporary
CEnemyThing::shutdown(); CEnemyThing::shutdown();
} }
@ -682,6 +681,16 @@ void CNpcEnemy::collidedWith( CThing *_thisThing )
bool CNpcEnemy::processSensor() bool CNpcEnemy::processSensor()
{ {
// temporary
if ( playerXDistSqr + playerYDistSqr < 10000 )
{
m_controlFunc = NPC_CONTROL_SHOT;
m_state = NPC_GENERIC_DEATH_START;
return( true );
}
// temporary
switch( m_sensorFunc ) switch( m_sensorFunc )
{ {
case NPC_SENSOR_NONE: case NPC_SENSOR_NONE:
@ -1207,6 +1216,43 @@ void CNpcEnemy::hasBeenAttacked()
void CNpcEnemy::processShot() void CNpcEnemy::processShot()
{ {
switch( m_data[m_type].shotFunc )
{
case NPC_SHOT_NONE:
{
// do nothing
break;
}
case NPC_SHOT_GENERIC_DIE:
{
switch ( m_state )
{
case NPC_GENERIC_DEATH_START:
{
m_animPlaying = true;
m_animNo = m_data[m_type].dieAnim;
m_frame = 0;
m_state = NPC_GENERIC_DEATH_END;
break;
}
case NPC_GENERIC_DEATH_END:
{
if ( !m_animPlaying )
{
this->shutdown();
}
break;
}
}
break;
}
}
} }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View file

@ -304,6 +304,12 @@ protected:
NPC_TIMER_ATTACK_DONE, NPC_TIMER_ATTACK_DONE,
}; };
enum NPC_SHOT_FUNC
{
NPC_SHOT_NONE = 0,
NPC_SHOT_GENERIC_DIE = 1,
};
enum NPC_MOTHER_JELLYFISH_STATE enum NPC_MOTHER_JELLYFISH_STATE
{ {
MOTHER_JELLYFISH_RETURN_TO_START_1 = 0, MOTHER_JELLYFISH_RETURN_TO_START_1 = 0,
@ -361,6 +367,12 @@ protected:
PUFFA_FISH_INFLATE, PUFFA_FISH_INFLATE,
}; };
enum NPC_GENERIC_DEATH_STATE
{
NPC_GENERIC_DEATH_START = 100,
NPC_GENERIC_DEATH_END = 101,
};
enum enum
{ {
NPC_JELLYFISH_RESISTANCE = 64, NPC_JELLYFISH_RESISTANCE = 64,
@ -396,6 +408,8 @@ protected:
DAMAGE_TYPE damageToUserType; DAMAGE_TYPE damageToUserType;
u16 initHealth; u16 initHealth;
u16 moveAnim; u16 moveAnim;
NPC_SHOT_FUNC shotFunc;
u16 dieAnim;
} }
NPC_DATA; NPC_DATA;

View file

@ -202,6 +202,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__SQUASH_ENEMY, DAMAGE__SQUASH_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_FISH_HOOK { // NPC_FISH_HOOK
@ -220,6 +222,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__NONE, DAMAGE__NONE,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_DUST_DEVIL { // NPC_DUST_DEVIL
@ -238,6 +242,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__NONE, DAMAGE__NONE,
0, 0,
ANIM_DUSTDEVIL_TWIST, ANIM_DUSTDEVIL_TWIST,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_PENDULUM { // NPC_PENDULUM
@ -256,6 +262,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_FIREBALL { // NPC_FIREBALL
@ -274,6 +282,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__BURN_ENEMY, DAMAGE__BURN_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SAW_BLADE { // NPC_SAW_BLADE
@ -292,6 +302,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SMALL_JELLYFISH_1 { // NPC_SMALL_JELLYFISH_1
@ -310,6 +322,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__SHOCK_ENEMY, DAMAGE__SHOCK_ENEMY,
16, 16,
ANIM_JELLYFISH1_SWIM, ANIM_JELLYFISH1_SWIM,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SMALL_JELLYFISH_2 { // NPC_SMALL_JELLYFISH_2
@ -328,6 +342,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__SHOCK_ENEMY, DAMAGE__SHOCK_ENEMY,
32, 32,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_ANEMONE_1 { // NPC_ANEMONE_1
@ -346,6 +362,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__NONE, DAMAGE__NONE,
16, 16,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_ANEMONE_2 { // NPC_ANEMONE_2
@ -364,6 +382,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__NONE, DAMAGE__NONE,
32, 32,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_ANEMONE_3 { // NPC_ANEMONE_3
@ -382,6 +402,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__NONE, DAMAGE__NONE,
48, 48,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SKELETAL_FISH { // NPC_SKELETAL_FISH
@ -400,6 +422,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__BITE_ENEMY, DAMAGE__BITE_ENEMY,
0, 0,
ANIM_SKELETALFISH_SWIM, ANIM_SKELETALFISH_SWIM,
NPC_SHOT_GENERIC_DIE,
ANIM_SKELETALFISH_DIE,
}, },
{ // NPC_CLAM_JUMP { // NPC_CLAM_JUMP
@ -418,6 +442,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_CLAM_STATIC { // NPC_CLAM_STATIC
@ -436,6 +462,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SQUID_DART { // NPC_SQUID_DART
@ -454,6 +482,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
16, 16,
ANIM_SQUIDDART_SWIM, ANIM_SQUIDDART_SWIM,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_FISH_FOLK { // NPC_FISH_FOLK
@ -472,6 +502,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__NONE, DAMAGE__NONE,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_PRICKLY_BUG { // NPC_PRICKLY_BUG
@ -490,6 +522,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__POISON_ENEMY, DAMAGE__POISON_ENEMY,
48, 48,
ANIM_CATERPILLAR_CRAWL, ANIM_CATERPILLAR_CRAWL,
NPC_SHOT_GENERIC_DIE,
ANIM_CATERPILLAR_DIE,
}, },
{ // NPC_SEA_SNAKE { // NPC_SEA_SNAKE
@ -508,6 +542,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__SHOCK_ENEMY, DAMAGE__SHOCK_ENEMY,
56, 56,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_PUFFA_FISH { // NPC_PUFFA_FISH
@ -526,6 +562,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
64, 64,
ANIM_PUFFAFISH_SWIM, ANIM_PUFFAFISH_SWIM,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_ANGLER_FISH { // NPC_ANGLER_FISH
@ -544,6 +582,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__NONE, DAMAGE__NONE,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_HERMIT_CRAB { // NPC_HERMIT_CRAB
@ -562,6 +602,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
ANIM_HERMITCRAB_SCUTTLE, ANIM_HERMITCRAB_SCUTTLE,
NPC_SHOT_GENERIC_DIE,
ANIM_HERMITCRAB_DIE,
}, },
{ // NPC_MINE { // NPC_MINE
@ -580,6 +622,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_BOOGER_MONSTER { // NPC_BOOGER_MONSTER
@ -598,6 +642,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__BITE_ENEMY, DAMAGE__BITE_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SPIDER_CRAB { // NPC_SPIDER_CRAB
@ -616,6 +662,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__PINCH_ENEMY, DAMAGE__PINCH_ENEMY,
0, 0,
ANIM_SPIDERCRAB_RUN, ANIM_SPIDERCRAB_RUN,
NPC_SHOT_GENERIC_DIE,
ANIM_SPIDERCRAB_DIE,
}, },
{ // NPC_EYEBALL { // NPC_EYEBALL
@ -634,6 +682,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
32, 32,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_BABY_OCTOPUS { // NPC_BABY_OCTOPUS
@ -652,6 +702,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
ANIM_BABYOCTOPUS_SWIM, ANIM_BABYOCTOPUS_SWIM,
NPC_SHOT_GENERIC_DIE,
ANIM_BABYOCTOPUS_DIE,
}, },
{ // NPC_ZOMBIE_FISH_FOLK { // NPC_ZOMBIE_FISH_FOLK
@ -670,6 +722,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
16, 16,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_NINJA_STARFISH { // NPC_NINJA_STARFISH
@ -688,6 +742,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
16, 16,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_GHOST { // NPC_GHOST
@ -706,6 +762,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
ANIM_GHOST_MOVE, ANIM_GHOST_MOVE,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_GHOST_PIRATE { // NPC_GHOST_PIRATE
@ -724,6 +782,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
160, 160,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_FLAMING_SKULL { // NPC_FLAMING_SKULL
@ -742,6 +802,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__BURN_ENEMY, DAMAGE__BURN_ENEMY,
16, 16,
ANIM_FLAMINGSKULL_MOVE, ANIM_FLAMINGSKULL_MOVE,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SHARK_MAN { // NPC_SHARK_MAN
@ -760,6 +822,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__BITE_ENEMY, DAMAGE__BITE_ENEMY,
16, 16,
ANIM_SHARKMAN_RUN, ANIM_SHARKMAN_RUN,
NPC_SHOT_GENERIC_DIE,
ANIM_SHARKMAN_DIE,
}, },
{ // NPC_OIL_BLOB { // NPC_OIL_BLOB
@ -778,6 +842,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
0, 0,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SKULL_STOMPER { // NPC_SKULL_STOMPER
@ -796,6 +862,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__SQUASH_ENEMY, DAMAGE__SQUASH_ENEMY,
0, 0,
ANIM_STOMPER_CRUSH, ANIM_STOMPER_CRUSH,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_MOTHER_JELLYFISH { // NPC_MOTHER_JELLYFISH
@ -814,6 +882,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__SHOCK_ENEMY, DAMAGE__SHOCK_ENEMY,
256, 256,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_SUB_SHARK { // NPC_SUB_SHARK
@ -832,6 +902,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
256, 256,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_PARASITIC_WORM { // NPC_PARASITIC_WORM
@ -850,6 +922,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
256, 256,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_FLYING_DUTCHMAN { // NPC_FLYING_DUTCHMAN
@ -868,6 +942,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
256, 256,
ANIM_FLYINGDUTCHMAN_FLY, ANIM_FLYINGDUTCHMAN_FLY,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_IRON_DOGFISH { // NPC_IRON_DOGFISH
@ -886,6 +962,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
256, 256,
ANIM_IRONDOGFISH_WALK, ANIM_IRONDOGFISH_WALK,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_PARASITIC_WORM_SEGMENT { // NPC_PARASITIC_WORM_SEGMENT
@ -904,6 +982,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__HIT_ENEMY, DAMAGE__HIT_ENEMY,
256, 256,
0, 0,
NPC_SHOT_GENERIC_DIE,
0,
}, },
{ // NPC_BALL_BLOB { // NPC_BALL_BLOB
@ -922,6 +1002,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
DAMAGE__BURN_ENEMY, DAMAGE__BURN_ENEMY,
16, 16,
ANIM_BALLBLOB_WOBBLE, ANIM_BALLBLOB_WOBBLE,
NPC_SHOT_GENERIC_DIE,
0,
}, },
}; };