mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2025-04-25 11:01:30 +00:00
689 lines
20 KiB
Text
689 lines
20 KiB
Text
/***********************************************************************
|
|
|
|
doom_player.script
|
|
|
|
This script contains any player specific code.
|
|
|
|
***********************************************************************/
|
|
|
|
object player : player_base {
|
|
weapon_base weapon;
|
|
boolean weapon_changed;
|
|
boolean start_fire;
|
|
|
|
void init();
|
|
|
|
// called by player code
|
|
void EnterCinematic();
|
|
void ExitCinematic();
|
|
void LowerWeapon();
|
|
void RaiseWeapon();
|
|
void ReloadWeapon();
|
|
void NetCatchup();
|
|
|
|
// torso anims
|
|
void Torso_Teleport();
|
|
void Torso_Death();
|
|
void Torso_Idle();
|
|
void Torso_Reload();
|
|
void Torso_Fire_StartFire();
|
|
void Torso_Fire();
|
|
void Torso_Fire_Aim();
|
|
void Torso_RaiseWeapon();
|
|
void Torso_LowerWeapon();
|
|
|
|
// leg anims
|
|
void Legs_Death();
|
|
void Legs_Idle();
|
|
void Legs_Crouched();
|
|
void Legs_Uncrouch();
|
|
void Legs_Turn_Left();
|
|
void Legs_Turn_Right();
|
|
void Legs_Walk();
|
|
void Legs_Walk_Forward();
|
|
void Legs_Walk_Backward();
|
|
void Legs_Walk_Left();
|
|
void Legs_Walk_Right();
|
|
void Legs_Run();
|
|
void Legs_Run_Forward();
|
|
void Legs_Run_Backward();
|
|
void Legs_Run_Left();
|
|
void Legs_Run_Right();
|
|
void Legs_CrouchWalk();
|
|
void Legs_CrouchWalk_Backward();
|
|
void Legs_Jump();
|
|
void Legs_Fall();
|
|
void Legs_Land_Hard();
|
|
void Legs_Land_Soft();
|
|
};
|
|
|
|
/*
|
|
=====================
|
|
player::init
|
|
=====================
|
|
*/
|
|
void player::init() {
|
|
weapon_changed = false;
|
|
start_fire = false;
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 0 );
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player::EnterCinematic
|
|
|
|
Required by game code for cinematics
|
|
=====================
|
|
*/
|
|
void player::EnterCinematic() {
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player::ExitCinematic
|
|
|
|
Required by game code for cinematics
|
|
=====================
|
|
*/
|
|
void player::ExitCinematic() {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 0 );
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player::LowerWeapon
|
|
|
|
Required by game code for weapon switches
|
|
=====================
|
|
*/
|
|
void player::LowerWeapon() {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_LowerWeapon", 3 );
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player::RaiseWeapon
|
|
|
|
Required by game code for weapon switches
|
|
=====================
|
|
*/
|
|
void player::RaiseWeapon() {
|
|
weapon = getWeaponEntity();
|
|
animState( ANIMCHANNEL_TORSO, "Torso_RaiseWeapon", 2 );
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player::ReloadWeapon
|
|
|
|
Required by game code for weapon reloading
|
|
=====================
|
|
*/
|
|
void player::ReloadWeapon() {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Reload", 4 );
|
|
}
|
|
|
|
/*
|
|
=====================
|
|
player::NetCatchup
|
|
|
|
Required by game code for networking
|
|
=====================
|
|
*/
|
|
void player::NetCatchup() {
|
|
weapon = getWeaponEntity();
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 0 );
|
|
}
|
|
|
|
/***********************************************************************
|
|
|
|
Torso animation control
|
|
|
|
***********************************************************************/
|
|
|
|
void player::Torso_Death() {
|
|
waitUntil( !AI_DEAD );
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
|
}
|
|
|
|
void player::Torso_Teleport() {
|
|
AI_TELEPORT = false;
|
|
overrideAnim( ANIMCHANNEL_LEGS );
|
|
playAnim( ANIMCHANNEL_TORSO, "teleport" );
|
|
waitUntil( animDone( ANIMCHANNEL_TORSO, 4 ) );
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 4 );
|
|
}
|
|
|
|
void player::Torso_Idle() {
|
|
playCycle( ANIMCHANNEL_TORSO, "idle" );
|
|
|
|
eachFrame {
|
|
if ( AI_TELEPORT ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Teleport", 0 );
|
|
}
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 2 );
|
|
}
|
|
if ( AI_ATTACK_HELD && start_fire ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire_StartFire", 2 );
|
|
}
|
|
if ( AI_PAIN ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Pain", 0 );
|
|
}
|
|
}
|
|
}
|
|
|
|
void player::Torso_Pain() {
|
|
string animname;
|
|
float nextpain;
|
|
float currenttime;
|
|
|
|
animname = getPainAnim();
|
|
playAnim( ANIMCHANNEL_TORSO, animname );
|
|
|
|
nextpain = sys.getTime() + 0.25;
|
|
while( !animDone( ANIMCHANNEL_TORSO, 4 ) ) {
|
|
if ( AI_PAIN ) {
|
|
currenttime = sys.getTime();
|
|
if ( currenttime > nextpain ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Pain", 0 );
|
|
}
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
finishAction( "pain" );
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 4 );
|
|
}
|
|
|
|
void player::Torso_Reload() {
|
|
if ( hasAnim( ANIMCHANNEL_TORSO, "reload_start" ) ) {
|
|
playAnim( ANIMCHANNEL_TORSO, "reload_start" );
|
|
while( !animDone( ANIMCHANNEL_TORSO, 0 ) ) {
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 3 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
while( AI_RELOAD ) {
|
|
playAnim( ANIMCHANNEL_TORSO, "reload_loop" );
|
|
while( !animDone( ANIMCHANNEL_TORSO, 0 ) ) {
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 3 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
}
|
|
|
|
playAnim( ANIMCHANNEL_TORSO, "reload_end" );
|
|
while( !animDone( ANIMCHANNEL_TORSO, 3 ) ) {
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 3 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
} else {
|
|
playAnim( ANIMCHANNEL_TORSO, "reload" );
|
|
while( !animDone( ANIMCHANNEL_TORSO, 3 ) ) {
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 3 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
}
|
|
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 3 );
|
|
}
|
|
|
|
void player::Torso_Fire_StartFire() {
|
|
playAnim( ANIMCHANNEL_TORSO, "startfire" );
|
|
|
|
while( AI_ATTACK_HELD && !( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) ) {
|
|
if ( AI_PAIN ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Pain", 0 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
boolean held = AI_ATTACK_HELD;
|
|
|
|
setBlendFrames( ANIMCHANNEL_TORSO, 2 );
|
|
|
|
playAnim( ANIMCHANNEL_TORSO, weapon.GetFireAnim() );
|
|
|
|
weapon.WEAPON_START_FIRING = false;
|
|
AI_WEAPON_FIRED = false;
|
|
while( !animDone( ANIMCHANNEL_TORSO, 3 ) ) {
|
|
waitFrame();
|
|
}
|
|
|
|
if ( !held && AI_ATTACK_HELD ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire_StartFire", 2 );
|
|
}
|
|
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire_Aim", 3 );
|
|
}
|
|
|
|
void player::Torso_Fire() {
|
|
playAnim( ANIMCHANNEL_TORSO, weapon.GetFireAnim() );
|
|
|
|
weapon.WEAPON_START_FIRING = false;
|
|
AI_WEAPON_FIRED = false;
|
|
while( !animDone( ANIMCHANNEL_TORSO, 3 ) ) {
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 2 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 2 );
|
|
}
|
|
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire_Aim", 3 );
|
|
}
|
|
|
|
void player::Torso_Fire_Aim() {
|
|
playAnim( ANIMCHANNEL_TORSO, "aim" );
|
|
|
|
while( !animDone( ANIMCHANNEL_TORSO, 12 ) ) {
|
|
if ( AI_ATTACK_HELD && start_fire ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire_StartFire", 2 );
|
|
}
|
|
if ( AI_WEAPON_FIRED || weapon.WEAPON_START_FIRING ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire", 2 );
|
|
}
|
|
if ( AI_PAIN ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Pain", 0 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
if ( AI_ATTACK_HELD && start_fire ) {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Fire_StartFire", 2 );
|
|
} else {
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 12 );
|
|
}
|
|
}
|
|
|
|
void player::Torso_RaiseWeapon() {
|
|
playAnim( ANIMCHANNEL_TORSO, "raise" );
|
|
while( !animDone( ANIMCHANNEL_TORSO, 3 ) ) {
|
|
waitFrame();
|
|
}
|
|
|
|
start_fire = hasAnim( ANIMCHANNEL_TORSO, "startfire" );
|
|
weapon_changed = true;
|
|
|
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 3 );
|
|
}
|
|
|
|
void player::Torso_LowerWeapon() {
|
|
weapon_changed = true;
|
|
playAnim( ANIMCHANNEL_TORSO, "lower" );
|
|
while( !animDone( ANIMCHANNEL_TORSO, 3 ) ) {
|
|
waitFrame();
|
|
}
|
|
}
|
|
|
|
/***********************************************************************
|
|
|
|
Legs animation control
|
|
|
|
***********************************************************************/
|
|
|
|
void player::Legs_Death() {
|
|
waitUntil( !AI_DEAD );
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 0 );
|
|
}
|
|
|
|
void player::Legs_Idle() {
|
|
weapon_changed = false;
|
|
idleAnim( ANIMCHANNEL_LEGS, "idle" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 );
|
|
}
|
|
if ( !AI_ONGROUND ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 );
|
|
}
|
|
if ( AI_FORWARD || AI_BACKWARD || AI_STRAFE_LEFT || AI_STRAFE_RIGHT ) {
|
|
Legs_Walk();
|
|
}
|
|
if ( AI_TURN_LEFT ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Turn_Left", 4 );
|
|
}
|
|
if ( AI_TURN_RIGHT ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Turn_Right", 4 );
|
|
}
|
|
if ( AI_CROUCH ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Crouch", 4 );
|
|
}
|
|
if ( weapon_changed ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
}
|
|
}
|
|
|
|
void player::Legs_Crouch() {
|
|
playAnim( ANIMCHANNEL_LEGS, "crouch_down" );
|
|
|
|
while( !animDone( ANIMCHANNEL_LEGS, 4 ) ) {
|
|
if ( !AI_CROUCH ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Uncrouch", 4 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Crouched", 4 );
|
|
}
|
|
|
|
void player::Legs_Crouched() {
|
|
weapon_changed = false;
|
|
playCycle( ANIMCHANNEL_LEGS, "crouch" );
|
|
|
|
eachFrame {
|
|
if ( !AI_CROUCH ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Uncrouch", 4 );
|
|
}
|
|
if ( AI_FORWARD ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 );
|
|
}
|
|
if ( AI_BACKWARD ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk_Backward", 4 );
|
|
}
|
|
if ( AI_STRAFE_LEFT ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 );
|
|
}
|
|
if ( AI_STRAFE_RIGHT ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 );
|
|
}
|
|
if ( AI_JUMP ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 );
|
|
}
|
|
if ( !AI_ONGROUND ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 );
|
|
}
|
|
if ( weapon_changed ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Crouched", 4 );
|
|
}
|
|
}
|
|
}
|
|
|
|
void player::Legs_Uncrouch() {
|
|
playAnim( ANIMCHANNEL_LEGS, "crouch_up" );
|
|
|
|
while( !animDone( ANIMCHANNEL_LEGS, 4 ) ) {
|
|
waitFrame();
|
|
}
|
|
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
|
|
void player::Legs_Turn_Left() {
|
|
playAnim( ANIMCHANNEL_LEGS, "turn_left" );
|
|
|
|
while( !animDone( ANIMCHANNEL_LEGS, 4 ) ) {
|
|
if ( AI_FORWARD || AI_BACKWARD || AI_STRAFE_LEFT || AI_STRAFE_RIGHT ) {
|
|
Legs_Walk();
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
AI_TURN_LEFT = false;
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
|
|
void player::Legs_Turn_Right() {
|
|
playAnim( ANIMCHANNEL_LEGS, "turn_right" );
|
|
|
|
while( !animDone( ANIMCHANNEL_LEGS, 4 ) ) {
|
|
if ( AI_FORWARD || AI_BACKWARD || AI_STRAFE_LEFT || AI_STRAFE_RIGHT ) {
|
|
Legs_Walk();
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
AI_TURN_RIGHT = false;
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
|
|
void player::Legs_Walk() {
|
|
weapon_changed = false;
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 ); }
|
|
if ( AI_RUN ) { animState( ANIMCHANNEL_LEGS, "Legs_Run", 4 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 ); }
|
|
if ( AI_FORWARD && !AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Forward", 4 ); }
|
|
if ( AI_BACKWARD && !AI_FORWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Backward", 4 ); }
|
|
if ( AI_STRAFE_LEFT && !AI_STRAFE_RIGHT ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Left", 2 ); }
|
|
if ( AI_STRAFE_RIGHT && !AI_STRAFE_LEFT ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Right", 2 ); }
|
|
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
|
|
void player::Legs_Walk_Forward() {
|
|
playCycle( ANIMCHANNEL_LEGS, "walk" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 ); }
|
|
if ( AI_RUN ) { animState( ANIMCHANNEL_LEGS, "Legs_Run", 4 ); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 ); }
|
|
if ( AI_BACKWARD || !AI_FORWARD || weapon_changed ) { Legs_Walk(); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Walk_Backward() {
|
|
playCycle( ANIMCHANNEL_LEGS, "walk_backwards" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 ); }
|
|
if ( AI_RUN ) { animState( ANIMCHANNEL_LEGS, "Legs_Run", 4 ); }
|
|
if ( AI_CROUCH && AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk_Backward", 4 ); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 ); }
|
|
if ( !AI_BACKWARD || AI_FORWARD || weapon_changed ) { Legs_Walk(); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Walk_Left() {
|
|
playCycle( ANIMCHANNEL_LEGS, "walk_strafe_left" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 ); }
|
|
if ( AI_RUN ) { animState( ANIMCHANNEL_LEGS, "Legs_Run", 4 ); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 ); }
|
|
if ( AI_FORWARD && !AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Forward", 4 ); }
|
|
if ( AI_BACKWARD && !AI_FORWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Backward", 4 ); }
|
|
if ( !AI_STRAFE_LEFT || AI_STRAFE_RIGHT || weapon_changed ) { Legs_Walk(); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Walk_Right() {
|
|
playCycle( ANIMCHANNEL_LEGS, "walk_strafe_right" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 ); }
|
|
if ( AI_RUN ) { animState( ANIMCHANNEL_LEGS, "Legs_Run", 4 ); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 ); }
|
|
if ( AI_FORWARD && !AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Forward", 4 ); }
|
|
if ( AI_BACKWARD && !AI_FORWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Walk_Backward", 4 ); }
|
|
if ( AI_STRAFE_LEFT || !AI_STRAFE_RIGHT || weapon_changed ) { Legs_Walk(); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Run() {
|
|
weapon_changed = false;
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 8 ); }
|
|
if ( !AI_RUN ) { Legs_Walk(); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 8 ); }
|
|
if ( AI_FORWARD && !AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Forward", 2 ); }
|
|
if ( AI_BACKWARD && !AI_FORWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Backward", 2 ); }
|
|
if ( AI_STRAFE_LEFT && !AI_STRAFE_RIGHT ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Left", 2 ); }
|
|
if ( AI_STRAFE_RIGHT && !AI_STRAFE_LEFT ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Right", 2 ); }
|
|
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 8 );
|
|
}
|
|
|
|
void player::Legs_Run_Forward() {
|
|
playCycle( ANIMCHANNEL_LEGS, "run_forward" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 8 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 8 ); }
|
|
if ( !AI_RUN ) { Legs_Walk(); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 8 ); }
|
|
if ( AI_BACKWARD || !AI_FORWARD || weapon_changed ) { animState( ANIMCHANNEL_LEGS, "Legs_Run", 8 ); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Run_Backward() {
|
|
playCycle( ANIMCHANNEL_LEGS, "run_backwards" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 8 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 8 ); }
|
|
if ( !AI_RUN ) { Legs_Walk(); }
|
|
if ( AI_CROUCH && AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk_Backward", 4 ); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 8 ); }
|
|
if ( !AI_BACKWARD || AI_FORWARD || weapon_changed ) { animState( ANIMCHANNEL_LEGS, "Legs_Run", 8 ); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Run_Left() {
|
|
playCycle( ANIMCHANNEL_LEGS, "run_strafe_left" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 8 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 8 ); }
|
|
if ( !AI_RUN ) { Legs_Walk(); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 8 ); }
|
|
if ( AI_FORWARD && !AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Forward", 8 ); }
|
|
if ( AI_BACKWARD && !AI_FORWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Backward", 8 ); }
|
|
if ( AI_STRAFE_RIGHT && !AI_STRAFE_LEFT ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Right", 2 ); }
|
|
if ( !AI_STRAFE_LEFT || AI_STRAFE_RIGHT || weapon_changed ) { animState( ANIMCHANNEL_LEGS, "Legs_Idle", 8 ); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Run_Right() {
|
|
playCycle( ANIMCHANNEL_LEGS, "run_strafe_right" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 8 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 8 ); }
|
|
if ( !AI_RUN ) { Legs_Walk(); }
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 8 ); }
|
|
if ( AI_FORWARD && !AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Forward", 8 ); }
|
|
if ( AI_BACKWARD && !AI_FORWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Backward", 8 ); }
|
|
if ( AI_STRAFE_LEFT && !AI_STRAFE_RIGHT ) { animState( ANIMCHANNEL_LEGS, "Legs_Run_Left", 2 ); }
|
|
if ( !AI_STRAFE_RIGHT || AI_STRAFE_LEFT || weapon_changed ) { animState( ANIMCHANNEL_LEGS, "Legs_Idle", 8 ); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_CrouchWalk() {
|
|
weapon_changed = false;
|
|
playCycle( ANIMCHANNEL_LEGS, "crouch_walk" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 ); }
|
|
if ( !AI_CROUCH ) { Legs_Walk(); }
|
|
if ( AI_BACKWARD && !AI_FORWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk_Backward", 4 ); }
|
|
if ( !AI_FORWARD && !AI_STRAFE_LEFT && !AI_STRAFE_RIGHT ) { animState( ANIMCHANNEL_LEGS, "Legs_Crouched", 4 ); }
|
|
if ( weapon_changed ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 ); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_CrouchWalk_Backward() {
|
|
weapon_changed = false;
|
|
playCycle( ANIMCHANNEL_LEGS, "crouch_walk_backwards" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 ); }
|
|
if ( !AI_CROUCH ) { Legs_Walk(); }
|
|
if ( AI_FORWARD && !AI_BACKWARD ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 ); }
|
|
if ( !AI_BACKWARD && !AI_STRAFE_LEFT && !AI_STRAFE_RIGHT ) { animState( ANIMCHANNEL_LEGS, "Legs_Crouched", 4 ); }
|
|
if ( weapon_changed ) { animState( ANIMCHANNEL_LEGS, "Legs_CrouchWalk", 4 ); }
|
|
}
|
|
}
|
|
|
|
void player::Legs_Jump() {
|
|
if ( AI_RUN ) {
|
|
playAnim( ANIMCHANNEL_LEGS, "run_jump" );
|
|
} else {
|
|
playAnim( ANIMCHANNEL_LEGS, "jump" );
|
|
}
|
|
|
|
while( !animDone( ANIMCHANNEL_LEGS, 4 ) ) {
|
|
if ( AI_JUMP ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Jump", 4 );
|
|
}
|
|
|
|
if ( AI_ONGROUND ) {
|
|
if ( AI_HARDLANDING ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Land_Hard", 2 );
|
|
}
|
|
if ( AI_SOFTLANDING ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Land_Soft", 2 );
|
|
}
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
waitFrame();
|
|
}
|
|
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Fall", 4 );
|
|
}
|
|
|
|
void player::Legs_Fall() {
|
|
playCycle( ANIMCHANNEL_LEGS, "fall" );
|
|
|
|
eachFrame {
|
|
if ( AI_JUMP ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Jump", 2 );
|
|
}
|
|
|
|
if ( AI_ONGROUND ) {
|
|
if ( AI_HARDLANDING ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Land_Hard", 2 );
|
|
}
|
|
if ( AI_SOFTLANDING ) {
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Land_Soft", 2 );
|
|
}
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
}
|
|
}
|
|
|
|
void player::Legs_Land_Hard() {
|
|
playAnim( ANIMCHANNEL_LEGS, "hard_land" );
|
|
|
|
while( !animDone( ANIMCHANNEL_LEGS, 4 ) ) {
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_Crouch", 2 ); }
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 2 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 2 ); }
|
|
waitFrame();
|
|
}
|
|
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|
|
|
|
void player::Legs_Land_Soft() {
|
|
playAnim( ANIMCHANNEL_LEGS, "soft_land" );
|
|
|
|
while( !animDone( ANIMCHANNEL_LEGS, 4 ) ) {
|
|
if ( AI_CROUCH ) { animState( ANIMCHANNEL_LEGS, "Legs_Crouch", 2 ); }
|
|
if ( AI_JUMP ) { animState( ANIMCHANNEL_LEGS, "Legs_Jump", 2 ); }
|
|
if ( !AI_ONGROUND ) { animState( ANIMCHANNEL_LEGS, "Legs_Fall", 2 ); }
|
|
waitFrame();
|
|
}
|
|
|
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 4 );
|
|
}
|