This commit is contained in:
parent
afaccf62dd
commit
d16d2ce244
9 changed files with 104 additions and 9 deletions
|
@ -281,6 +281,7 @@ player_src := demoplay \
|
||||||
pmfly \
|
pmfly \
|
||||||
pmjelly \
|
pmjelly \
|
||||||
pmnet \
|
pmnet \
|
||||||
|
pmswal \
|
||||||
psbutt \
|
psbutt \
|
||||||
pscart \
|
pscart \
|
||||||
psdance \
|
psdance \
|
||||||
|
@ -293,7 +294,8 @@ player_src := demoplay \
|
||||||
psjump \
|
psjump \
|
||||||
pslook \
|
pslook \
|
||||||
psrun \
|
psrun \
|
||||||
psspring
|
psspring \
|
||||||
|
psswal
|
||||||
|
|
||||||
save_src := save
|
save_src := save
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ void CNpcSubSharkEnemy::postInit()
|
||||||
|
|
||||||
m_timerTimer = 0;
|
m_timerTimer = 0;
|
||||||
m_salvoCount = 5;
|
m_salvoCount = 5;
|
||||||
|
m_carryPlayer = false;
|
||||||
m_movementTimer = GameState::getOneSecondInFrames() * ( 1 + ( ( 7 * m_health ) / m_data[m_type].initHealth ) );
|
m_movementTimer = GameState::getOneSecondInFrames() * ( 1 + ( ( 7 * m_health ) / m_data[m_type].initHealth ) );
|
||||||
|
|
||||||
CNpcBossEnemy::postInit();
|
CNpcBossEnemy::postInit();
|
||||||
|
@ -240,7 +241,7 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
||||||
if ( !m_animPlaying )
|
if ( !m_animPlaying )
|
||||||
{
|
{
|
||||||
m_animPlaying = true;
|
m_animPlaying = true;
|
||||||
m_animNo = ANIM_SHARKSUB_SWIM;
|
m_animNo = ANIM_SHARKSUB_SPRINTOPEN;
|
||||||
m_frame = 0;
|
m_frame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,13 +276,25 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
||||||
}
|
}
|
||||||
|
|
||||||
case SUB_SHARK_CHARGE:
|
case SUB_SHARK_CHARGE:
|
||||||
|
{
|
||||||
|
if ( !m_carryPlayer && abs( playerXDist ) < 200 )
|
||||||
|
{
|
||||||
|
if ( m_animNo != ANIM_SHARKSUB_CHOMP || !m_animPlaying )
|
||||||
|
{
|
||||||
|
m_animPlaying = true;
|
||||||
|
m_animNo = ANIM_SHARKSUB_CHOMP;
|
||||||
|
m_frame = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if ( !m_animPlaying )
|
if ( !m_animPlaying )
|
||||||
{
|
{
|
||||||
m_animPlaying = true;
|
m_animPlaying = true;
|
||||||
m_animNo = ANIM_SHARKSUB_SWIM;
|
m_animNo = ANIM_SHARKSUB_SPRINTOPEN;
|
||||||
m_frame = 0;
|
m_frame = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s32 distX, distY;
|
s32 distX, distY;
|
||||||
|
|
||||||
|
@ -332,10 +345,33 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
||||||
processGenericGotoTarget( _frames, distX, distY, m_speed );
|
processGenericGotoTarget( _frames, distX, distY, m_speed );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( m_carryPlayer )
|
||||||
|
{
|
||||||
|
// spit out player
|
||||||
|
|
||||||
|
CPlayer *player = GameScene.getPlayer();
|
||||||
|
player->setMode( m_oldPlayerMode );
|
||||||
|
m_carryPlayer = false;
|
||||||
|
|
||||||
|
DVECTOR move;
|
||||||
|
move.vx = 16 * _frames;
|
||||||
|
move.vy = -16 * _frames;
|
||||||
|
|
||||||
|
player->shove( move );
|
||||||
|
player->setMoveVelocity( &move );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( m_carryPlayer )
|
||||||
|
{
|
||||||
|
CPlayer *player = GameScene.getPlayer();
|
||||||
|
|
||||||
|
player->setPos( Pos );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*if ( !m_animPlaying )
|
/*if ( !m_animPlaying )
|
||||||
{
|
{
|
||||||
|
@ -704,12 +740,20 @@ void CNpcSubSharkEnemy::collidedWith(CThing *_thisThing)
|
||||||
ATTACK_STATE playerState = player->getAttackState();
|
ATTACK_STATE playerState = player->getAttackState();
|
||||||
|
|
||||||
if(playerState==ATTACK_STATE__NONE)
|
if(playerState==ATTACK_STATE__NONE)
|
||||||
{
|
|
||||||
if ( !player->isRecoveringFromHit() )
|
|
||||||
{
|
{
|
||||||
CPlayer *player = GameScene.getPlayer();
|
CPlayer *player = GameScene.getPlayer();
|
||||||
|
|
||||||
|
if ( !player->isRecoveringFromHit() && !m_carryPlayer )
|
||||||
|
{
|
||||||
player->takeDamage( m_data[m_type].damageToUserType,REACT__GET_DIRECTION_FROM_THING,(CThing*)this );
|
player->takeDamage( m_data[m_type].damageToUserType,REACT__GET_DIRECTION_FROM_THING,(CThing*)this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( m_state == SUB_SHARK_CHARGE && player->getMode() != PLAYER_MODE_SWALLOW )
|
||||||
|
{
|
||||||
|
m_carryPlayer = true;
|
||||||
|
m_oldPlayerMode = player->getMode();
|
||||||
|
player->setMode( PLAYER_MODE_SWALLOW );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ( m_invulnerableTimer <= 0 )
|
else if ( m_invulnerableTimer <= 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
#include "enemy\nboss.h"
|
#include "enemy\nboss.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PLAYER_PLAYER_H__
|
||||||
|
#include "player\player.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
class CNpcSubSharkEnemy : public CNpcBossEnemy
|
class CNpcSubSharkEnemy : public CNpcBossEnemy
|
||||||
{
|
{
|
||||||
|
@ -53,6 +57,8 @@ protected:
|
||||||
u8 m_salvoCount;
|
u8 m_salvoCount;
|
||||||
s32 m_invulnerableTimer;
|
s32 m_invulnerableTimer;
|
||||||
DVECTOR m_targetPos;
|
DVECTOR m_targetPos;
|
||||||
|
u8 m_carryPlayer;
|
||||||
|
PLAYER_MODE m_oldPlayerMode;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -74,6 +74,10 @@
|
||||||
#include "player\pmcart.h"
|
#include "player\pmcart.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PLAYER_PMSWAL_H__
|
||||||
|
#include "player\pmswal.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __GFX_FONT_H__
|
#ifndef __GFX_FONT_H__
|
||||||
#include "gfx\font.h"
|
#include "gfx\font.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -205,6 +209,7 @@ static const char *s_modeText[NUM_PLAYERMODES]=
|
||||||
"DEAD",
|
"DEAD",
|
||||||
"FLY",
|
"FLY",
|
||||||
"CART",
|
"CART",
|
||||||
|
"SWALLOW",
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -226,6 +231,7 @@ CPlayerModeJellyLauncher PLAYERMODEJELLYLAUNCHER;
|
||||||
CPlayerModeDead PLAYERMODEDEAD;
|
CPlayerModeDead PLAYERMODEDEAD;
|
||||||
CPlayerModeFly PLAYERMODEFLY;
|
CPlayerModeFly PLAYERMODEFLY;
|
||||||
CPlayerModeCart PLAYERMODECART;
|
CPlayerModeCart PLAYERMODECART;
|
||||||
|
CPlayerModeSwallow PLAYERMODESWALLOW;
|
||||||
|
|
||||||
CPlayerMode *CPlayer::s_playerModes[NUM_PLAYERMODES]=
|
CPlayerMode *CPlayer::s_playerModes[NUM_PLAYERMODES]=
|
||||||
{
|
{
|
||||||
|
@ -239,6 +245,7 @@ CPlayerMode *CPlayer::s_playerModes[NUM_PLAYERMODES]=
|
||||||
&PLAYERMODEDEAD, // PLAYER_MODE_DEAD
|
&PLAYERMODEDEAD, // PLAYER_MODE_DEAD
|
||||||
&PLAYERMODEFLY, // PLAYER_MODE_FLY
|
&PLAYERMODEFLY, // PLAYER_MODE_FLY
|
||||||
&PLAYERMODECART, // PLAYER_MODE_CART
|
&PLAYERMODECART, // PLAYER_MODE_CART
|
||||||
|
&PLAYERMODESWALLOW, // PLAYER_MODE_SWALLOW
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -301,6 +308,7 @@ PLAYER_ADDONS s_addonNumbers[NUM_PLAYERMODES]=
|
||||||
NO_ADDON, // PLAYER_MODE_DEAD
|
NO_ADDON, // PLAYER_MODE_DEAD
|
||||||
NO_ADDON, // PLAYER_MODE_FLY
|
NO_ADDON, // PLAYER_MODE_FLY
|
||||||
NO_ADDON, // PLAYER_MODE_CART
|
NO_ADDON, // PLAYER_MODE_CART
|
||||||
|
NO_ADDON, // PLAYER_MODE_SWALLOW
|
||||||
};
|
};
|
||||||
|
|
||||||
s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
|
s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
|
||||||
|
@ -2008,7 +2016,8 @@ void CPlayer::takeDamage(DAMAGE_TYPE _damage,REACT_DIRECTION _reactDirection,CTh
|
||||||
if(m_invincibleFrameCount==0&& // Don't take damage if still recovering from the last hit
|
if(m_invincibleFrameCount==0&& // Don't take damage if still recovering from the last hit
|
||||||
m_invincibilityRingTimer==0&& // Or if we have the invincibility ring on
|
m_invincibilityRingTimer==0&& // Or if we have the invincibility ring on
|
||||||
m_currentPlayerModeClass->getState()!=STATE_SOAKUP&& // Or soaking up
|
m_currentPlayerModeClass->getState()!=STATE_SOAKUP&& // Or soaking up
|
||||||
m_currentMode!=PLAYER_MODE_DEAD) // Or already dead! :)
|
m_currentMode!=PLAYER_MODE_DEAD &&
|
||||||
|
m_currentMode!=PLAYER_MODE_SWALLOW) // Or already dead! :)
|
||||||
{
|
{
|
||||||
int ouchThatHurt=true;
|
int ouchThatHurt=true;
|
||||||
int ouchThatHurtSoMuchThatImJustGoingToDieNow=false;
|
int ouchThatHurtSoMuchThatImJustGoingToDieNow=false;
|
||||||
|
|
|
@ -60,6 +60,7 @@ typedef enum
|
||||||
PLAYER_MODE_FLY,
|
PLAYER_MODE_FLY,
|
||||||
|
|
||||||
PLAYER_MODE_CART,
|
PLAYER_MODE_CART,
|
||||||
|
PLAYER_MODE_SWALLOW,
|
||||||
|
|
||||||
NUM_PLAYERMODES,
|
NUM_PLAYERMODES,
|
||||||
}PLAYER_MODE;
|
}PLAYER_MODE;
|
||||||
|
@ -88,6 +89,7 @@ typedef enum
|
||||||
STATE_CART,
|
STATE_CART,
|
||||||
STATE_FLOAT,
|
STATE_FLOAT,
|
||||||
STATE_CELEBRATE,
|
STATE_CELEBRATE,
|
||||||
|
STATE_SWALLOW,
|
||||||
|
|
||||||
NUM_STATES,
|
NUM_STATES,
|
||||||
}PLAYER_STATE;
|
}PLAYER_STATE;
|
||||||
|
@ -258,6 +260,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setMode(PLAYER_MODE _mode);
|
void setMode(PLAYER_MODE _mode);
|
||||||
|
PLAYER_MODE getMode() {return m_currentMode;}
|
||||||
int getFacing();
|
int getFacing();
|
||||||
void setFacing(int _facing);
|
void setFacing(int _facing);
|
||||||
int getAnimFrame();
|
int getAnimFrame();
|
||||||
|
|
|
@ -82,6 +82,10 @@
|
||||||
#include "player\psdance.h"
|
#include "player\psdance.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PLAYER_PSSWAL_H__
|
||||||
|
#include "player\psswal.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -138,6 +142,7 @@ static CPlayerState *s_stateTable[]=
|
||||||
&s_stateCart, // STATE_CART
|
&s_stateCart, // STATE_CART
|
||||||
&s_stateFloat, // STATE_FLOAT
|
&s_stateFloat, // STATE_FLOAT
|
||||||
&s_stateDance, // STATE_CELEBRATE
|
&s_stateDance, // STATE_CELEBRATE
|
||||||
|
&s_stateSwallow, // STATE_SWALLOW
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,10 @@
|
||||||
#include "player\psdance.h"
|
#include "player\psdance.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PLAYER_PSSWAL_H__
|
||||||
|
#include "player\psswal.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Std Lib
|
/* Std Lib
|
||||||
------- */
|
------- */
|
||||||
|
@ -150,6 +154,7 @@ static CPlayerState *s_stateTable[]=
|
||||||
&s_stateCart, // STATE_CART
|
&s_stateCart, // STATE_CART
|
||||||
&s_stateFloat, // STATE_FLOAT
|
&s_stateFloat, // STATE_FLOAT
|
||||||
&s_stateDance, // STATE_CELEBRATE
|
&s_stateDance, // STATE_CELEBRATE
|
||||||
|
&s_stateSwallow, // STATE_SWALLOW
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,10 @@
|
||||||
#include "player\pscart.h"
|
#include "player\pscart.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __PLAYER_PSSWAL_H__
|
||||||
|
#include "player\psswal.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __PLAYER_PSFLOAT_H__
|
#ifndef __PLAYER_PSFLOAT_H__
|
||||||
#include "player\psfloat.h"
|
#include "player\psfloat.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -142,6 +146,7 @@ static CPlayerState *s_stateTable[]=
|
||||||
&s_stateCart, // STATE_CART
|
&s_stateCart, // STATE_CART
|
||||||
&s_stateFloat, // STATE_FLOAT
|
&s_stateFloat, // STATE_FLOAT
|
||||||
&s_stateDance, // STATE_CELEBRATE
|
&s_stateDance, // STATE_CELEBRATE
|
||||||
|
&s_stateSwallow, // STATE_SWALLOW
|
||||||
};
|
};
|
||||||
|
|
||||||
static PlayerMetrics s_playerMetrics=
|
static PlayerMetrics s_playerMetrics=
|
||||||
|
|
|
@ -1858,6 +1858,14 @@ SOURCE=..\..\..\source\player\pmodes.cpp
|
||||||
|
|
||||||
SOURCE=..\..\..\source\player\pmodes.h
|
SOURCE=..\..\..\source\player\pmodes.h
|
||||||
# End Source File
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\player\pmswal.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\player\pmswal.h
|
||||||
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "states"
|
# Begin Group "states"
|
||||||
|
|
||||||
|
@ -1968,6 +1976,14 @@ SOURCE=..\..\..\source\player\psspring.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\player\psswal.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\player\psswal.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\source\player\pstates.h
|
SOURCE=..\..\..\source\player\pstates.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
|
|
Loading…
Add table
Reference in a new issue