diff --git a/makefile.gaz b/makefile.gaz index 091cfdfb5..03f5d5225 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -68,6 +68,7 @@ enemy_src := 2denemy \ nfdutch \ nsshark \ ndogfish \ + nhazard \ enemy projectl_src := projectl diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index c7b0e8266..92940d891 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -60,6 +60,30 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 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_INIT_DEFAULT, NPC_SENSOR_JELLYFISH_USER_CLOSE, @@ -435,7 +459,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = void CNpc::init() { - m_type = NPC_SKULL_STOMPER; + m_type = NPC_FISH_HOOK; m_heading = m_fireHeading = 0; m_movementTimer = 0; @@ -492,6 +516,7 @@ void CNpc::init() break; case NPC_INIT_SKULL_STOMPER: + case NPC_INIT_FALLING_ACORN: { m_heading = m_fireHeading = 1024; @@ -545,6 +570,29 @@ void CNpc::init() 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: break; @@ -562,6 +610,9 @@ void CNpc::think(int _frames) { switch ( this->m_controlFunc ) { + case NPC_CONTROL_NONE: + return; + case NPC_CONTROL_MOVEMENT: if ( !processSensor() ) { @@ -815,6 +866,7 @@ bool CNpc::processSensor() case NPC_SENSOR_ANEMONE_USER_CLOSE: case NPC_SENSOR_EYEBALL_USER_CLOSE: + case NPC_SENSOR_FALLING_ACORN_USER_CLOSE: { 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: return( false ); } @@ -1129,6 +1195,18 @@ void CNpc::processClose(int _frames) case NPC_CLOSE_IRON_DOGFISH_ATTACK: processCloseIronDogfishAttack( _frames ); + break; + + case NPC_CLOSE_FALLING_ACORN_FALL: + processCloseFallingAcornFall( _frames ); + + break; + + case NPC_CLOSE_FISH_HOOK_RISE: + processCloseFishHookRise( _frames ); + + break; + default: break; } diff --git a/source/enemy/npc.h b/source/enemy/npc.h index 703fe7523..21a90efbd 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -30,7 +30,9 @@ public: enum NPC_UNIT_TYPE { 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_LARGE_JELLYFISH, NPC_ANEMONE_1, @@ -85,10 +87,13 @@ protected: NPC_INIT_SUB_SHARK, NPC_INIT_FLYING_DUTCHMAN, NPC_INIT_IRON_DOGFISH, + NPC_INIT_FALLING_ACORN, + NPC_INIT_FISH_HOOK, }; enum NPC_CONTROL_FUNC { + NPC_CONTROL_NONE, NPC_CONTROL_MOVEMENT, NPC_CONTROL_SHOT, NPC_CONTROL_CLOSE, @@ -110,6 +115,8 @@ protected: NPC_SENSOR_SKULL_STOMPER_USER_CLOSE, NPC_SENSOR_BOOGER_MONSTER_USER_CLOSE, NPC_SENSOR_IRON_DOGFISH_USER_CLOSE, + NPC_SENSOR_FALLING_ACORN_USER_CLOSE, + NPC_SENSOR_FISH_HOOK_USER_CLOSE, }; enum NPC_CLOSE_FUNC @@ -130,6 +137,8 @@ protected: NPC_CLOSE_SUB_SHARK_ATTACK, NPC_CLOSE_FLYING_DUTCHMAN_ATTACK, NPC_CLOSE_IRON_DOGFISH_ATTACK, + NPC_CLOSE_FALLING_ACORN_FALL, + NPC_CLOSE_FISH_HOOK_RISE, }; enum NPC_MOVEMENT_FUNC @@ -286,6 +295,11 @@ protected: void processStandardIronDogfishAttack( int _frames ); void processCloseIronDogfishAttack( int _frames ); + // hazard functions + + void processCloseFallingAcornFall( int _frames ); + void processCloseFishHookRise( int _frames ); + // data static NPC_DATA m_data[NPC_UNIT_TYPE_MAX]; diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index 79117a038..531b1a820 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -157,6 +157,10 @@ SOURCE=..\..\..\source\enemy\ngpirate.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nhazard.cpp +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nmjfish.cpp # End Source File # Begin Source File