diff --git a/Tactical/Animation Control.cpp b/Tactical/Animation Control.cpp index 400da19f..200be65d 100644 --- a/Tactical/Animation Control.cpp +++ b/Tactical/Animation Control.cpp @@ -69,6 +69,8 @@ static UINT16 JUMP_WALL_DOWN_AnimationScript[MAX_FRAMES_PER_ANIM] = { 44,43,42,4 static UINT16 REMOTE_DET_AnimationScript[MAX_FRAMES_PER_ANIM] = { 1,2,3,4,484,4,5,6,1,442,499,999,0,0,0,0 }; // SANDRO - new animation of remote detonator by PasHancock +static UINT16 THROW_KNIFE_SP_BM_AnimationScript[MAX_FRAMES_PER_ANIM] = { 757,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,12,13,709,14,15,16,430,16,17,17,18,19,20,21,753,442,499,999,0,0,0,0 }; + @@ -989,6 +991,9 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] = {"JUMP WINDOWS" , 0, 50, (FLOAT)0, ANIM_NOCHANGE_PENDINGCOUNT | ANIM_NORESTART | ANIM_STATIONARY | ANIM_NOSHOW_MARKER | ANIM_MODERATE_EFFORT | ANIM_LOWER_WEAPON | ANIM_NONINTERRUPT, ANIM_STAND, ANIM_CROUCH, -1}, + //SPECIAL THROW KNIFE FOR BIG MALES + "THROW KNIFE 2" , 0, 50, (FLOAT)0, ANIM_STATIONARY | ANIM_NOMOVE_MARKER | ANIM_NONINTERRUPT | ANIM_MIN_EFFORT | ANIM_ATTACK , ANIM_STAND, ANIM_STAND, -1, + }; ANI_SPEED_DEF gubAnimWalkSpeeds[ TOTALBODYTYPES ] = @@ -1677,6 +1682,7 @@ void InitAnimationSurfacesPerBodytype( ) gubAnimSurfaceIndex[ BIGMALE ][ CUTTING_FENCE ] = BGMMEDIC; gubAnimSurfaceIndex[ BIGMALE ][ FROM_INJURED_TRANSITION ] = BGMHURTTRANS; gubAnimSurfaceIndex[ BIGMALE ][ THROW_KNIFE ] = BGMTHROWKNIFE; + gubAnimSurfaceIndex[ BIGMALE ][ THROW_KNIFE_SP_BM ] = BGMTHROWKNIFE2; gubAnimSurfaceIndex[ BIGMALE ][ KNIFE_BREATH ] = BGMBREATHKNIFE; gubAnimSurfaceIndex[ BIGMALE ][ KNIFE_GOTOBREATH ] = BGMBREATHKNIFE; gubAnimSurfaceIndex[ BIGMALE ][ KNIFE_ENDBREATH ] = BGMBREATHKNIFE; @@ -3258,6 +3264,8 @@ BOOLEAN LoadAnimationStateInstructions( ) memcpy(gusAnimInst[USE_REMOTE],REMOTE_DET_AnimationScript,sizeof(REMOTE_DET_AnimationScript)); // SANDRO - new animation of remote detonator by PasHancock + memcpy(gusAnimInst[THROW_KNIFE_SP_BM],THROW_KNIFE_SP_BM_AnimationScript,sizeof(THROW_KNIFE_SP_BM_AnimationScript)); // SANDRO - new animation of remote detonator by PasHancock + return( TRUE ); } diff --git a/Tactical/Animation Control.h b/Tactical/Animation Control.h index 3b2beed6..916d2716 100644 --- a/Tactical/Animation Control.h +++ b/Tactical/Animation Control.h @@ -560,6 +560,8 @@ enum AnimationStates JUMPWINDOWS, + THROW_KNIFE_SP_BM, + NUMANIMATIONSTATES }; diff --git a/Tactical/Animation Data.cpp b/Tactical/Animation Data.cpp index e251325e..81c96ed6 100644 --- a/Tactical/Animation Data.cpp +++ b/Tactical/Animation Data.cpp @@ -515,6 +515,9 @@ AnimationSurfaceType gAnimSurfaceDatabase[ NUMANIMATIONSURFACETYPES ] = RGMUSEREMOTE, "ANIMS\\S_MERC\\S_USEREMOTE.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, BGMUSEREMOTE, "ANIMS\\M_MERC\\M_USEREMOTE.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGFUSEREMOTE, "ANIMS\\F_MERC\\F_USEREMOTE.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + + BGMTHROWKNIFE, "ANIMS\\M_MERC\\M_K_THRO2.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + }; diff --git a/Tactical/Animation Data.h b/Tactical/Animation Data.h index 1e6d69d0..39f3c085 100644 --- a/Tactical/Animation Data.h +++ b/Tactical/Animation Data.h @@ -545,6 +545,8 @@ BGMWITHSTONE, BGMUSEREMOTE, RGFUSEREMOTE, + BGMTHROWKNIFE2, + NUMANIMATIONSURFACETYPES } AnimationSurfaceTypes; diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 1146e796..844ea8ed 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -11268,7 +11268,14 @@ void SOLDIERTYPE::EVENT_SoldierBeginKnifeThrowAttack( INT32 sGridNo, UINT8 ubDir DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("!!!!!!! Starting knifethrow attack, bullets left %d", this->bBulletsLeft) ); DebugAttackBusy( String( "Begin knife throwing attack: ATB %d\n", gTacticalStatus.ubAttackBusyCount) ); - this->EVENT_InitNewSoldierAnim( THROW_KNIFE, 0 , FALSE ); + if ( this->ubBodyType == BIGMALE && ((this->ubProfile != NO_PROFILE && gMercProfiles[ this->ubProfile ].bCharacterTrait == CHAR_TRAIT_SHOWOFF) || (HAS_SKILL_TRAIT( this, THROWING_NT ) && gGameOptions.fNewTraitSystem) || (HAS_SKILL_TRAIT( this, THROWING_OT ) && !gGameOptions.fNewTraitSystem) ) ) + { + this->EVENT_InitNewSoldierAnim( THROW_KNIFE_SP_BM, 0 , FALSE ); + } + else + { + this->EVENT_InitNewSoldierAnim( THROW_KNIFE, 0 , FALSE ); + } // CHANGE DIRECTION AND GOTO ANIMATION NOW this->EVENT_SetSoldierDesiredDirection( ubDirection ); @@ -11997,7 +12004,7 @@ void SOLDIERTYPE::HaultSoldierFromSighting( BOOLEAN fFromSightingEnemy ) // ATE: Dave, don't kill me // Here, we need to handle the situation when we're throweing a knife and we see somebody // cause for some reason throwing a knie does not use the pTempObject stuff that all other stuff does... - if ( this->usPendingAnimation == THROW_KNIFE ) + if ( this->usPendingAnimation == THROW_KNIFE || this->usPendingAnimation == THROW_KNIFE_SP_BM ) { // Decrement attack counter... DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("@@@@@@@ Reducing attacker busy count..., ending throw knife because saw something") );