diff --git a/makefile.gaz b/makefile.gaz index c6f189187..04cb3615a 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -66,6 +66,7 @@ enemy_src := 2denemy \ nbooger \ nmjfish \ nfdutch \ + nsshark \ enemy projectl_src := projectl diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index 80a642a70..4f316a8db 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -395,6 +395,18 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 256, }, + { // NPC_SUB_SHARK + NPC_INIT_SUB_SHARK, + NPC_SENSOR_NONE, + NPC_MOVEMENT_SUB_SHARK, + NPC_MOVEMENT_MODIFIER_NONE, + NPC_CLOSE_SUB_SHARK_ATTACK, + NPC_TIMER_NONE, + false, + 3, + 256, + }, + { // NPC_FLYING_DUTCHMAN NPC_INIT_FLYING_DUTCHMAN, NPC_SENSOR_NONE, @@ -411,7 +423,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = void CNpc::init() { - m_type = NPC_FLYING_DUTCHMAN; + m_type = NPC_SUB_SHARK; m_heading = m_fireHeading = 0; m_movementTimer = 0; @@ -497,7 +509,7 @@ void CNpc::init() break; } - case NPC_FLYING_DUTCHMAN: + case NPC_INIT_FLYING_DUTCHMAN: { m_state = FLYING_DUTCHMAN_ATTACK_PLAYER_1; m_extendDir = EXTEND_UP; @@ -505,6 +517,14 @@ void CNpc::init() break; } + case NPC_INIT_SUB_SHARK: + { + m_state = SUB_SHARK_CYCLE; + m_extendDir = EXTEND_RIGHT; + + break; + } + default: break; @@ -958,6 +978,13 @@ void CNpc::processMovement(int _frames) break; } + case NPC_MOVEMENT_SUB_SHARK: + { + processSubSharkMovement( _frames ); + + break; + } + default: break; @@ -1065,6 +1092,11 @@ void CNpc::processClose(int _frames) break; + case NPC_CLOSE_SUB_SHARK_ATTACK: + processCloseSubSharkAttack( _frames ); + + break; + default: break; } diff --git a/source/enemy/npc.h b/source/enemy/npc.h index c0683c72c..04ac2d6d1 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -58,6 +58,7 @@ public: NPC_OIL_BLOB, NPC_SKULL_STOMPER, NPC_MOTHER_JELLYFISH, + NPC_SUB_SHARK, NPC_FLYING_DUTCHMAN, NPC_UNIT_TYPE_MAX, }; @@ -80,6 +81,7 @@ protected: NPC_INIT_GHOST_PIRATE, NPC_INIT_SKULL_STOMPER, NPC_INIT_MOTHER_JELLYFISH, + NPC_INIT_SUB_SHARK, NPC_INIT_FLYING_DUTCHMAN, }; @@ -122,6 +124,7 @@ protected: NPC_CLOSE_SKULL_STOMPER_ATTACK, NPC_CLOSE_BOOGER_MONSTER_ATTACK, NPC_CLOSE_MOTHER_JELLYFISH_ATTACK, + NPC_CLOSE_SUB_SHARK_ATTACK, NPC_CLOSE_FLYING_DUTCHMAN_ATTACK, }; @@ -132,6 +135,7 @@ protected: NPC_MOVEMENT_USER_SEEK, NPC_MOVEMENT_VERTICAL, NPC_MOVEMENT_MOTHER_JELLYFISH, + NPC_MOVEMENT_SUB_SHARK, NPC_MOVEMENT_FLYING_DUTCHMAN, }; @@ -163,6 +167,13 @@ protected: FLYING_DUTCHMAN_ATTACK_PLAYER_3, }; + enum NPC_SUB_SHARK_STATE + { + SUB_SHARK_CYCLE = 0, + SUB_SHARK_MINE_1 = 1, + SUB_SHARK_MINE_2, + }; + enum { NPC_JELLYFISH_RESISTANCE = 64, @@ -250,6 +261,11 @@ protected: void processFlyingDutchmanMovement( int _frames ); void processCloseFlyingDutchmanAttack( int _frames ); + // sub shark functions + + void processSubSharkMovement( int _frames ); + void processCloseSubSharkAttack( int _frames ); + // data static NPC_DATA m_data[NPC_UNIT_TYPE_MAX]; @@ -271,6 +287,7 @@ protected: bool m_extendDir; DVECTOR m_base; u8 m_state; + u8 m_salvoCount; }; diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index a14a4768b..c78467a36 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -185,6 +185,10 @@ SOURCE=..\..\..\source\enemy\nsjfish.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nsshark.cpp +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nsstomp.cpp # End Source File # End Group