This commit is contained in:
parent
5378d9a1ab
commit
1ab34685db
3 changed files with 105 additions and 71 deletions
|
@ -563,7 +563,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
NPC_CLOSE_NONE,
|
NPC_CLOSE_NONE,
|
||||||
NPC_TIMER_NONE,
|
NPC_TIMER_NONE,
|
||||||
false,
|
false,
|
||||||
3,
|
2,
|
||||||
2048,
|
2048,
|
||||||
DETECT_ATTACK_COLLISION_GENERIC,
|
DETECT_ATTACK_COLLISION_GENERIC,
|
||||||
DAMAGE__PINCH_ENEMY,
|
DAMAGE__PINCH_ENEMY,
|
||||||
|
|
|
@ -46,6 +46,10 @@ void CNpcSpiderCrabEnemy::postInit()
|
||||||
|
|
||||||
m_state = SPIDER_CRAB_INIT_JUMP;
|
m_state = SPIDER_CRAB_INIT_JUMP;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_velocity = m_data[m_type].speed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -96,6 +100,8 @@ bool CNpcSpiderCrabEnemy::processSensor()
|
||||||
m_extension = 0;
|
m_extension = 0;
|
||||||
m_velocity = 5;
|
m_velocity = 5;
|
||||||
m_base = Pos;
|
m_base = Pos;
|
||||||
|
m_jumpDelay = GameState::getOneSecondInFrames() >> 1;
|
||||||
|
m_animPlaying = false;
|
||||||
|
|
||||||
// sound
|
// sound
|
||||||
|
|
||||||
|
@ -120,6 +126,12 @@ bool CNpcSpiderCrabEnemy::processSensor()
|
||||||
|
|
||||||
void CNpcSpiderCrabEnemy::processClose( int _frames )
|
void CNpcSpiderCrabEnemy::processClose( int _frames )
|
||||||
{
|
{
|
||||||
|
if ( m_jumpDelay > 0 )
|
||||||
|
{
|
||||||
|
m_jumpDelay -= _frames;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
s32 velocity;
|
s32 velocity;
|
||||||
DVECTOR newPos = Pos;
|
DVECTOR newPos = Pos;
|
||||||
|
|
||||||
|
@ -130,7 +142,7 @@ void CNpcSpiderCrabEnemy::processClose( int _frames )
|
||||||
m_frame = 0;
|
m_frame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
velocity = m_velocity * _frames;
|
velocity = ( m_velocity * _frames ) >> 1;
|
||||||
|
|
||||||
if ( m_extendDir == EXTEND_RIGHT )
|
if ( m_extendDir == EXTEND_RIGHT )
|
||||||
{
|
{
|
||||||
|
@ -205,6 +217,7 @@ void CNpcSpiderCrabEnemy::processClose( int _frames )
|
||||||
|
|
||||||
m_extension = 0;
|
m_extension = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -290,6 +303,7 @@ void CNpcSpiderCrabEnemy::processSpiderCrabInitJumpMovement( int _frames )
|
||||||
if ( m_extension > 64 )
|
if ( m_extension > 64 )
|
||||||
{
|
{
|
||||||
m_state = SPIDER_CRAB_DEFAULT;
|
m_state = SPIDER_CRAB_DEFAULT;
|
||||||
|
m_velocity = m_data[m_type].speed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,6 +338,8 @@ void CNpcSpiderCrabEnemy::processMovement(int _frames)
|
||||||
|
|
||||||
void CNpcSpiderCrabEnemy::processMovementModifier( int _frames, s32 distX, s32 distY, s32 dist, s16 headingChange )
|
void CNpcSpiderCrabEnemy::processMovementModifier( int _frames, s32 distX, s32 distY, s32 dist, s16 headingChange )
|
||||||
{
|
{
|
||||||
|
int groundDist;
|
||||||
|
|
||||||
Pos.vx += distX;
|
Pos.vx += distX;
|
||||||
Pos.vy += distY;
|
Pos.vy += distY;
|
||||||
|
|
||||||
|
@ -335,8 +351,25 @@ void CNpcSpiderCrabEnemy::processMovementModifier( int _frames, s32 distX, s32 d
|
||||||
testPos1.vx -= 10;
|
testPos1.vx -= 10;
|
||||||
testPos2.vx += 10;
|
testPos2.vx += 10;
|
||||||
|
|
||||||
testPos1.vy += CGameScene::getCollision()->getHeightFromGround( testPos1.vx, testPos1.vy, 16 );
|
groundDist = CGameScene::getCollision()->getHeightFromGround( testPos1.vx, testPos1.vy, 12 );
|
||||||
testPos2.vy += CGameScene::getCollision()->getHeightFromGround( testPos2.vx, testPos2.vy, 16 );
|
|
||||||
|
if ( abs( groundDist ) > 12 )
|
||||||
|
{
|
||||||
|
m_drawRotation = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
testPos1.vy += groundDist;
|
||||||
|
|
||||||
|
groundDist = CGameScene::getCollision()->getHeightFromGround( testPos2.vx, testPos2.vy, 12 );
|
||||||
|
|
||||||
|
if ( abs( groundDist ) > 12 )
|
||||||
|
{
|
||||||
|
m_drawRotation = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
testPos2.vy += groundDist;
|
||||||
|
|
||||||
s32 xDist = testPos2.vx - testPos1.vx;
|
s32 xDist = testPos2.vx - testPos1.vx;
|
||||||
s32 yDist = testPos2.vy - testPos1.vy;
|
s32 yDist = testPos2.vy - testPos1.vy;
|
||||||
|
|
|
@ -33,6 +33,7 @@ protected:
|
||||||
void processSpiderCrabInitJumpMovement( int _frames );
|
void processSpiderCrabInitJumpMovement( int _frames );
|
||||||
|
|
||||||
s32 m_attackDist;
|
s32 m_attackDist;
|
||||||
|
int m_jumpDelay;
|
||||||
|
|
||||||
enum NPC_SPIDER_CRAB_STATE
|
enum NPC_SPIDER_CRAB_STATE
|
||||||
{
|
{
|
||||||
|
@ -43,7 +44,7 @@ protected:
|
||||||
enum NPC_SPIDER_CRAB_CONSTANTS
|
enum NPC_SPIDER_CRAB_CONSTANTS
|
||||||
{
|
{
|
||||||
SPIDER_CRAB_EXTENSION = 64,
|
SPIDER_CRAB_EXTENSION = 64,
|
||||||
SPIDER_CRAB_HEIGHT = 50,
|
SPIDER_CRAB_HEIGHT = 40,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue