diff --git a/GameVersion.cpp b/GameVersion.cpp index d21bf911..7ccbddb9 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -15,9 +15,9 @@ #ifdef JA2EDITOR #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8495 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8495 (Development Build)" }; #endif // ------------------------------ @@ -27,11 +27,11 @@ //DEBUG BUILD VERSION #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8495 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8495 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8495 (Development Build)" }; #endif #elif defined CRIPPLED_VERSION @@ -46,16 +46,16 @@ //RELEASE BUILD VERSION #ifdef JA2UB - CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8495 (Development Build)" }; #elif defined (JA113DEMO) - CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8495 (Development Build)" }; #else - CHAR16 zVersionLabel[256] = { L"Release v1.13.8478 (Development Build)" }; + CHAR16 zVersionLabel[256] = { L"Release v1.13.8495 (Development Build)" }; #endif #endif -CHAR8 czVersionNumber[16] = { "Build 17.09.23" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 17.10.07" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; // SAVE_GAME_VERSION is defined in header, change it there diff --git a/Tactical/Animation Control.cpp b/Tactical/Animation Control.cpp index f6141ae1..1d2784b7 100644 --- a/Tactical/Animation Control.cpp +++ b/Tactical/Animation Control.cpp @@ -104,6 +104,10 @@ static UINT16 CRYO_DEATH_CROUCHED_AnimationScript[MAX_FRAMES_PER_ANIM] = {1, 2, static UINT16 BAYONET_STAB_STANDING_VS_STANDING_AnimationScript[MAX_FRAMES_PER_ANIM] = {757, 1, 2, 3, 4, 5, 6, 7, 727, 492, 8, 9, 430, 10, 11, 12, 13, 14, 15, 16, 17, 442, 1038, 494, 0}; static UINT16 BAYONET_STAB_STANDING_VS_PRONE_AnimationScript[MAX_FRAMES_PER_ANIM] = { 757, 1, 2, 3, 4, 5, 6, 7, 727, 492, 8, 9, 430, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 442, 1038, 494, 0 }; +static UINT16 CROUCHEDMOVE_RIFLE_READY_AnimationScript[MAX_FRAMES_PER_ANIM] = { 5, 703, 6, 7, 8, 9, 10, 11, 704, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 501, 999, 0 }; +static UINT16 CROUCHEDMOVE_PISTOL_READY_AnimationScript[MAX_FRAMES_PER_ANIM] = { 5, 703, 6, 7, 8, 9, 10, 11, 704, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 501, 999, 0 }; +static UINT16 CROUCHEDMOVE_DUAL_READY_AnimationScript[MAX_FRAMES_PER_ANIM] = { 5, 703, 6, 7, 8, 9, 10, 11, 704, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 501, 999, 0 }; + ANI_SPEED_DEF gubAnimCrawlSpeeds[ TOTALBODYTYPES ]; //Block for anim file UINT16 gusAnimInst[ MAX_ANIMATIONS ][ MAX_FRAMES_PER_ANIM ]; @@ -1029,9 +1033,19 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] = "SIDE STEPPING WITH RIFLE RDY" , 0, 50, (FLOAT)0.4, ANIM_MOVING | ANIM_NORESTART | ANIM_FIREREADY | ANIM_RAISE_WEAPON | ANIM_VARIABLE_EFFORT, ANIM_STAND, ANIM_STAND, -1, "SIDE STEPPING WITH DUAL RDY" , 0, 50, (FLOAT)0.4, ANIM_MOVING | ANIM_NORESTART | ANIM_FIREREADY | ANIM_RAISE_WEAPON | ANIM_VARIABLE_EFFORT, ANIM_STAND, ANIM_STAND, -1, + // SIDE_STEP_CROUCH_ + { "SIDE_STEP_CROUCH_RIFLE_RDY", 0, 0, ( FLOAT )2.2, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_VARIABLE_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1 }, + { "SIDE_STEP_CROUCH_PISTOL_RDY", 0, 0, ( FLOAT )2.2, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_VARIABLE_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1 }, + { "SIDE_STEP_CROUCH_DUAL_RDY", 0, 0, ( FLOAT )2.2, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_VARIABLE_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1 }, + //WALKING WITH READIED WEAPON {"WALKING WITH RIFLE RDY" , 20, 0, (FLOAT)1.6, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_FIREREADY | ANIM_RAISE_WEAPON | ANIM_VARIABLE_EFFORT, ANIM_STAND, ANIM_STAND, -1}, {"WALKING WITH DUAL RDY" , 20, 0, (FLOAT)1.6, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_FIREREADY | ANIM_RAISE_WEAPON | ANIM_VARIABLE_EFFORT, ANIM_STAND, ANIM_STAND, -1}, + + // CROUCHED WITH READIED WEAPON + { "CROUCHEDMOVE_RIFLE_READY", 0, 0, ( FLOAT )2.2, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_FIREREADY | ANIM_RAISE_WEAPON | ANIM_VARIABLE_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1 }, + { "CROUCHEDMOVE_PISTOL_READY", 0, 0, ( FLOAT )2.2, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_FIREREADY | ANIM_RAISE_WEAPON | ANIM_VARIABLE_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1 }, + { "CROUCHEDMOVE_DUAL_READY", 0, 0, ( FLOAT )2.2, ANIM_MOVING | ANIM_TURNING | ANIM_NORESTART | ANIM_FIREREADY | ANIM_RAISE_WEAPON | ANIM_VARIABLE_EFFORT, ANIM_CROUCH, ANIM_CROUCH, -1 }, //GIVING AID WHILE PRONE {"PRN START AID" , 0, 90, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_FASTTURN | ANIM_NORESTART | ANIM_NONINTERRUPT | ANIM_LOWER_WEAPON | ANIM_LIGHT_EFFORT , ANIM_PRONE, ANIM_PRONE, -1}, @@ -1499,10 +1513,18 @@ void InitAnimationSurfacesPerBodytype( ) gubAnimSurfaceIndex[ REGMALE ][ SIDE_STEP_WEAPON_RDY ] = RGMSIDESTEP_R_RDY; gubAnimSurfaceIndex[ REGMALE ][ SIDE_STEP_DUAL_RDY ] = RGMSIDESTEP_D_RDY; + + gubAnimSurfaceIndex[ REGMALE ][ SIDE_STEP_CROUCH_RIFLE ] = RGMSIDESTEP_CROUCH_R_RDY; + gubAnimSurfaceIndex[ REGMALE ][ SIDE_STEP_CROUCH_PISTOL ] = RGMSIDESTEP_CROUCH_P_RDY; + gubAnimSurfaceIndex[ REGMALE ][ SIDE_STEP_CROUCH_DUAL ] = RGMSIDESTEP_CROUCH_D_RDY; gubAnimSurfaceIndex[ REGMALE ][ WALKING_WEAPON_RDY ] = RGMWALK_R_RDY; gubAnimSurfaceIndex[ REGMALE ][ WALKING_DUAL_RDY ] = RGMWALK_D_RDY; + gubAnimSurfaceIndex[ REGMALE ][ CROUCHEDMOVE_RIFLE_READY ] = RGMCROUCH_R_RDY; + gubAnimSurfaceIndex[ REGMALE ][ CROUCHEDMOVE_PISTOL_READY ] = RGMCROUCH_P_RDY; + gubAnimSurfaceIndex[ REGMALE ][ CROUCHEDMOVE_DUAL_READY ] = RGMCROUCH_D_RDY; + gubAnimSurfaceIndex[ REGMALE ][ START_AID_PRN ] = RGMMEDICPRN; gubAnimSurfaceIndex[ REGMALE ][ GIVING_AID_PRN ] = RGMMEDICPRN; gubAnimSurfaceIndex[ REGMALE ][ END_AID_PRN ] = RGMMEDICPRN; @@ -1943,10 +1965,18 @@ void InitAnimationSurfacesPerBodytype( ) gubAnimSurfaceIndex[ BIGMALE ][ SIDE_STEP_WEAPON_RDY ] = BGMSIDESTEP_R_RDY; gubAnimSurfaceIndex[ BIGMALE ][ SIDE_STEP_DUAL_RDY ] = BGMSIDESTEP_D_RDY; + + gubAnimSurfaceIndex[ BIGMALE ][ SIDE_STEP_CROUCH_RIFLE ] = BGMSIDESTEP_CROUCH_R_RDY; + gubAnimSurfaceIndex[ BIGMALE ][ SIDE_STEP_CROUCH_PISTOL ] = BGMSIDESTEP_CROUCH_P_RDY; + gubAnimSurfaceIndex[ BIGMALE ][ SIDE_STEP_CROUCH_DUAL ] = BGMSIDESTEP_CROUCH_D_RDY; - gubAnimSurfaceIndex[ BIGMALE ][ WALKING_WEAPON_RDY ] = BGMWALK_R_RDY; + gubAnimSurfaceIndex[ BIGMALE ][ WALKING_WEAPON_RDY ] = BGMWALK_R_RDY; gubAnimSurfaceIndex[ BIGMALE ][ WALKING_DUAL_RDY ] = BGMWALK_D_RDY; + gubAnimSurfaceIndex[ BIGMALE ][ CROUCHEDMOVE_RIFLE_READY ] = BGMCROUCH_R_RDY; + gubAnimSurfaceIndex[ BIGMALE ][ CROUCHEDMOVE_PISTOL_READY ] = BGMCROUCH_P_RDY; + gubAnimSurfaceIndex[ BIGMALE ][ CROUCHEDMOVE_DUAL_READY ] = BGMCROUCH_D_RDY; + gubAnimSurfaceIndex[ BIGMALE ][ START_AID_PRN ] = BGMMEDICPRN; gubAnimSurfaceIndex[ BIGMALE ][ GIVING_AID_PRN ] = BGMMEDICPRN; gubAnimSurfaceIndex[ BIGMALE ][ END_AID_PRN ] = BGMMEDICPRN; @@ -2412,10 +2442,18 @@ void InitAnimationSurfacesPerBodytype( ) gubAnimSurfaceIndex[ STOCKYMALE ][ SIDE_STEP_WEAPON_RDY ] = RGMSIDESTEP_R_RDY; gubAnimSurfaceIndex[ STOCKYMALE ][ SIDE_STEP_DUAL_RDY ] = RGMSIDESTEP_D_RDY; + + gubAnimSurfaceIndex[ STOCKYMALE ][ SIDE_STEP_CROUCH_RIFLE ] = RGMSIDESTEP_CROUCH_R_RDY; + gubAnimSurfaceIndex[ STOCKYMALE ][ SIDE_STEP_CROUCH_PISTOL ] = RGMSIDESTEP_CROUCH_P_RDY; + gubAnimSurfaceIndex[ STOCKYMALE ][ SIDE_STEP_CROUCH_DUAL ] = RGMSIDESTEP_CROUCH_D_RDY; gubAnimSurfaceIndex[ STOCKYMALE ][ WALKING_WEAPON_RDY ] = RGMWALK_R_RDY; gubAnimSurfaceIndex[ STOCKYMALE ][ WALKING_DUAL_RDY ] = RGMWALK_D_RDY; + gubAnimSurfaceIndex[ STOCKYMALE ][ CROUCHEDMOVE_RIFLE_READY ] = RGMCROUCH_R_RDY; + gubAnimSurfaceIndex[ STOCKYMALE ][ CROUCHEDMOVE_PISTOL_READY ] = RGMCROUCH_P_RDY; + gubAnimSurfaceIndex[ STOCKYMALE ][ CROUCHEDMOVE_DUAL_READY ] = RGMCROUCH_D_RDY; + gubAnimSurfaceIndex[ STOCKYMALE ][ START_AID_PRN ] = RGMMEDICPRN; gubAnimSurfaceIndex[ STOCKYMALE ][ GIVING_AID_PRN ] = RGMMEDICPRN; gubAnimSurfaceIndex[ STOCKYMALE ][ END_AID_PRN ] = RGMMEDICPRN; @@ -2850,12 +2888,20 @@ void InitAnimationSurfacesPerBodytype( ) gubAnimSurfaceIndex[ REGFEMALE ][ JUMPWINDOWS ] = RGFJUMPWINDOWS; - gubAnimSurfaceIndex[ REGFEMALE ][ SIDE_STEP_WEAPON_RDY ] = RGFSIDESTEP_R_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ SIDE_STEP_WEAPON_RDY ] = RGFSIDESTEP_R_RDY; gubAnimSurfaceIndex[ REGFEMALE ][ SIDE_STEP_DUAL_RDY ] = RGFSIDESTEP_D_RDY; - + + gubAnimSurfaceIndex[ REGFEMALE ][ SIDE_STEP_CROUCH_RIFLE ] = RGFSIDESTEP_CROUCH_R_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ SIDE_STEP_CROUCH_PISTOL ] = RGFSIDESTEP_CROUCH_P_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ SIDE_STEP_CROUCH_DUAL ] = RGFSIDESTEP_CROUCH_D_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ WALKING_WEAPON_RDY ] = RGFWALK_R_RDY; gubAnimSurfaceIndex[ REGFEMALE ][ WALKING_DUAL_RDY ] = RGFWALK_D_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ CROUCHEDMOVE_RIFLE_READY ] = RGFCROUCH_R_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ CROUCHEDMOVE_PISTOL_READY ] = RGFCROUCH_P_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ CROUCHEDMOVE_DUAL_READY ] = RGFCROUCH_D_RDY; + gubAnimSurfaceIndex[ REGFEMALE ][ START_AID_PRN ] = RGFMEDICPRN; gubAnimSurfaceIndex[ REGFEMALE ][ GIVING_AID_PRN ] = RGFMEDICPRN; gubAnimSurfaceIndex[ REGFEMALE ][ END_AID_PRN ] = RGFMEDICPRN; @@ -3744,9 +3790,16 @@ BOOLEAN LoadAnimationStateInstructions( ) memcpy(gusAnimInst[SIDE_STEP_WEAPON_RDY],fuckTheBoundz[SIDE_STEP],sizeof(fuckTheBoundz[SIDE_STEP])); memcpy(gusAnimInst[SIDE_STEP_DUAL_RDY],fuckTheBoundz[SIDE_STEP],sizeof(fuckTheBoundz[SIDE_STEP])); - + + memcpy( gusAnimInst[SIDE_STEP_CROUCH_RIFLE], fuckTheBoundz[SIDE_STEP], sizeof( fuckTheBoundz[SIDE_STEP] ) ); + memcpy( gusAnimInst[SIDE_STEP_CROUCH_PISTOL], fuckTheBoundz[SIDE_STEP], sizeof( fuckTheBoundz[SIDE_STEP] ) ); + memcpy( gusAnimInst[SIDE_STEP_CROUCH_DUAL], fuckTheBoundz[SIDE_STEP], sizeof( fuckTheBoundz[SIDE_STEP] ) ); + memcpy(gusAnimInst[WALKING_WEAPON_RDY],fuckTheBoundz[WALKING],sizeof(fuckTheBoundz[WALKING])); memcpy(gusAnimInst[WALKING_DUAL_RDY],fuckTheBoundz[WALKING],sizeof(fuckTheBoundz[WALKING])); + memcpy(gusAnimInst[CROUCHEDMOVE_RIFLE_READY], CROUCHEDMOVE_RIFLE_READY_AnimationScript, sizeof( CROUCHEDMOVE_RIFLE_READY_AnimationScript )); + memcpy(gusAnimInst[CROUCHEDMOVE_PISTOL_READY], CROUCHEDMOVE_PISTOL_READY_AnimationScript, sizeof( CROUCHEDMOVE_PISTOL_READY_AnimationScript ) ); + memcpy(gusAnimInst[CROUCHEDMOVE_DUAL_READY], CROUCHEDMOVE_DUAL_READY_AnimationScript, sizeof( CROUCHEDMOVE_DUAL_READY_AnimationScript ) ); memcpy(gusAnimInst[START_AID_PRN],PRONE_START_FIRST_AID_AnimationScript,sizeof(PRONE_START_FIRST_AID_AnimationScript)); memcpy(gusAnimInst[GIVING_AID_PRN],PRONE_GIVE_FIRST_AID_AnimationScript,sizeof(PRONE_GIVE_FIRST_AID_AnimationScript)); diff --git a/Tactical/Animation Control.h b/Tactical/Animation Control.h index 5277fe3d..e5cdd3d6 100644 --- a/Tactical/Animation Control.h +++ b/Tactical/Animation Control.h @@ -567,9 +567,15 @@ enum AnimationStates SIDE_STEP_WEAPON_RDY, SIDE_STEP_DUAL_RDY, + SIDE_STEP_CROUCH_RIFLE, + SIDE_STEP_CROUCH_PISTOL, + SIDE_STEP_CROUCH_DUAL, WALKING_WEAPON_RDY, WALKING_DUAL_RDY, + CROUCHEDMOVE_RIFLE_READY, + CROUCHEDMOVE_PISTOL_READY, + CROUCHEDMOVE_DUAL_READY, START_AID_PRN, GIVING_AID_PRN, diff --git a/Tactical/Animation Data.cpp b/Tactical/Animation Data.cpp index daf7db14..89222898 100644 --- a/Tactical/Animation Data.cpp +++ b/Tactical/Animation Data.cpp @@ -543,20 +543,44 @@ AnimationSurfaceType gAnimSurfaceDatabase[ NUMANIMATIONSURFACETYPES ] = RGFSIDESTEP_P_RDY, "ANIMS\\F_MERC\\F_P_RDY_SDSP.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGFSIDESTEP_R_RDY, "ANIMS\\F_MERC\\F_R_RDY_SDSP.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGFSIDESTEP_D_RDY, "ANIMS\\F_MERC\\F_DBL_RDY_SDSP.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + + RGMSIDESTEP_CROUCH_R_RDY, "ANIMS\\S_MERC\\s_rifle_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGMSIDESTEP_CROUCH_P_RDY, "ANIMS\\S_MERC\\s_pistol_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGMSIDESTEP_CROUCH_D_RDY, "ANIMS\\S_MERC\\s_dual_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + + BGMSIDESTEP_CROUCH_R_RDY, "ANIMS\\M_MERC\\m_rifle_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + BGMSIDESTEP_CROUCH_P_RDY, "ANIMS\\M_MERC\\m_pistol_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + BGMSIDESTEP_CROUCH_D_RDY, "ANIMS\\M_MERC\\m_dual_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + + RGFSIDESTEP_CROUCH_R_RDY, "ANIMS\\F_MERC\\f_rifle_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGFSIDESTEP_CROUCH_P_RDY, "ANIMS\\F_MERC\\f_pistol_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGFSIDESTEP_CROUCH_D_RDY, "ANIMS\\F_MERC\\f_dual_crouch_sidestep.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGMWALK_P_RDY, "ANIMS\\S_MERC\\S_P_RDY_WALK.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGMWALK_R_RDY, "ANIMS\\S_MERC\\S_R_RDY_WALK.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGMWALK_D_RDY, "ANIMS\\S_MERC\\S_DBL_RDY_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + + RGMCROUCH_R_RDY, "ANIMS\\S_MERC\\s_rifle_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGMCROUCH_P_RDY, "ANIMS\\S_MERC\\s_pistol_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGMCROUCH_D_RDY, "ANIMS\\S_MERC\\s_dual_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, BGMWALK_P_RDY, "ANIMS\\M_MERC\\M_N2_RDY_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, BGMWALK_R_RDY, "ANIMS\\M_MERC\\M_R_RDY_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, BGMWALK_R_RDY2, "ANIMS\\M_MERC\\M_R_RDY_DBASS_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, BGMWALK_D_RDY, "ANIMS\\M_MERC\\M_DBL_RDY_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + + BGMCROUCH_R_RDY, "ANIMS\\M_MERC\\m_rifle_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + BGMCROUCH_P_RDY, "ANIMS\\M_MERC\\m_pistol_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + BGMCROUCH_D_RDY, "ANIMS\\M_MERC\\m_dual_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGFWALK_P_RDY, "ANIMS\\F_MERC\\F_P_RDY_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGFWALK_R_RDY, "ANIMS\\F_MERC\\F_R_RDY_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGFWALK_D_RDY, "ANIMS\\F_MERC\\F_DBL_RDY_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGFCROUCH_R_RDY, "ANIMS\\F_MERC\\f_rifle_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGFCROUCH_P_RDY, "ANIMS\\F_MERC\\f_pistol_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGFCROUCH_D_RDY, "ANIMS\\F_MERC\\f_dual_crouch_walk_aim.sti", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, + RGMMEDICPRN, "ANIMS\\S_MERC\\S_PRN_MED.STI", P_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, BGMMEDICPRN, "ANIMS\\M_MERC\\M_PRN_MED.STI", P_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, RGFMEDICPRN, "ANIMS\\F_MERC\\F_PRN_MED.STI", P_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1, diff --git a/Tactical/Animation Data.h b/Tactical/Animation Data.h index 9ddd16b1..f194748c 100644 --- a/Tactical/Animation Data.h +++ b/Tactical/Animation Data.h @@ -577,19 +577,43 @@ BGMWITHSTONE, RGFSIDESTEP_R_RDY, RGFSIDESTEP_D_RDY, + RGMSIDESTEP_CROUCH_R_RDY, + RGMSIDESTEP_CROUCH_P_RDY, + RGMSIDESTEP_CROUCH_D_RDY, + + BGMSIDESTEP_CROUCH_R_RDY, + BGMSIDESTEP_CROUCH_P_RDY, + BGMSIDESTEP_CROUCH_D_RDY, + + RGFSIDESTEP_CROUCH_R_RDY, + RGFSIDESTEP_CROUCH_P_RDY, + RGFSIDESTEP_CROUCH_D_RDY, + RGMWALK_P_RDY, RGMWALK_R_RDY, RGMWALK_D_RDY, + RGMCROUCH_R_RDY, + RGMCROUCH_P_RDY, + RGMCROUCH_D_RDY, + BGMWALK_P_RDY, BGMWALK_R_RDY, BGMWALK_R_RDY2, BGMWALK_D_RDY, + BGMCROUCH_R_RDY, + BGMCROUCH_P_RDY, + BGMCROUCH_D_RDY, + RGFWALK_P_RDY, RGFWALK_R_RDY, RGFWALK_D_RDY, + RGFCROUCH_R_RDY, + RGFCROUCH_P_RDY, + RGFCROUCH_D_RDY, + RGMMEDICPRN, BGMMEDICPRN, RGFMEDICPRN, diff --git a/Tactical/Handle UI.cpp b/Tactical/Handle UI.cpp index 57d9d585..881ca9ee 100644 --- a/Tactical/Handle UI.cpp +++ b/Tactical/Handle UI.cpp @@ -4920,6 +4920,9 @@ void SetMovementModeCursor( SOLDIERTYPE *pSoldier ) ///ddd quick fix for losed cursor { case SWATTING_WK: ///ddd quick fix for losed cursor } + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: guiNewUICursor = MOVE_SWAT_UICURSOR; break; @@ -4980,6 +4983,12 @@ void SetConfirmMovementModeCursor( SOLDIERTYPE *pSoldier, BOOLEAN fFromMove ) break; case SWATTING: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: guiNewUICursor = ALL_MOVE_SWAT_UICURSOR; break; diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 04632a19..9bc7663b 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -1284,6 +1284,25 @@ BOOLEAN ExecuteOverhead( ) pSoldier->usPendingAnimation = AIM_DUAL_STAND; pSoldier->ubPendingDirection = pSoldier->ubDirection; } + else if ( pSoldier->usAnimState == CROUCHEDMOVE_RIFLE_READY ) + { + fAimAfterMove = TRUE; + pSoldier->usPendingAnimation = AIM_RIFLE_CROUCH; + pSoldier->ubPendingDirection = pSoldier->ubDirection; + } + else if ( pSoldier->usAnimState == CROUCHEDMOVE_PISTOL_READY ) + { + fAimAfterMove = TRUE; + pSoldier->usPendingAnimation = AIM_RIFLE_CROUCH; + pSoldier->ubPendingDirection = pSoldier->ubDirection; + } + else if ( pSoldier->usAnimState == CROUCHEDMOVE_DUAL_READY ) + { + fAimAfterMove = TRUE; + pSoldier->usPendingAnimation = AIM_DUAL_CROUCH; + pSoldier->ubPendingDirection = pSoldier->ubDirection; + } + // OK, if we are the selected soldier, refresh some UI stuff if ( pSoldier->ubID == (UINT8)gusSelectedSoldier ) { @@ -1582,7 +1601,7 @@ BOOLEAN ExecuteOverhead( ) if ( gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT && gGameExternalOptions.fNoStandingAnimAdjustInCombat && !pSoldier->bCollapsed && !pSoldier->bBreathCollapsed ) { - // Flugente: We have to decide depending on the animation we have, otherwise we canc ause bugs if we do this after being hit by an explosion etc. + // Flugente: We have to decide depending on the animation we have, otherwise we can cause bugs if we do this after being hit by an explosion etc. BOOLEAN dontadjustanim = FALSE; switch ( pSoldier->usAnimState ) { @@ -1599,10 +1618,16 @@ BOOLEAN ExecuteOverhead( ) case RUNNING_W_PISTOL: case SIDE_STEP_WEAPON_RDY: case SIDE_STEP_DUAL_RDY: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: case WALKING_WEAPON_RDY: case WALKING_DUAL_RDY: case WALKING_ALTERNATIVE_RDY: case SIDE_STEP_ALTERNATIVE_RDY: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: dontadjustanim = TRUE; break; } diff --git a/Tactical/PATHAI.cpp b/Tactical/PATHAI.cpp index f53de82e..2b407652 100644 --- a/Tactical/PATHAI.cpp +++ b/Tactical/PATHAI.cpp @@ -3609,6 +3609,12 @@ if(!GridNoOnVisibleWorldTile(iDestination)) ubAPCost += APBPConstants[AP_MODIFIER_WALK]; //WALKCOST); break; case SWATTING: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: ubAPCost += APBPConstants[AP_MODIFIER_SWAT]; //SWATCOST); break; case CRAWLING: @@ -3703,6 +3709,9 @@ if(!GridNoOnVisibleWorldTile(iDestination)) break; case SWATTING: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: // Add cost to stand once there BEFORE jumping.... ubAPCost += GetAPsCrouch( s, TRUE ); @@ -4611,6 +4620,9 @@ INT32 PlotPath( SOLDIERTYPE *pSold, INT32 sDestGridNo, INT8 bCopyRoute, INT8 bPl break; case SWATTING: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: // Add cost to stand once there BEFORE.... sExtraCostSwat += GetAPsCrouch(pSold, TRUE); @@ -4674,6 +4686,12 @@ INT32 PlotPath( SOLDIERTYPE *pSold, INT32 sDestGridNo, INT8 bCopyRoute, INT8 bPl sMovementAPsCost = sTileCost + APBPConstants[AP_MODIFIER_WALK] + APBPConstants[AP_MODIFIER_READY]; break; case SWATTING: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: sMovementAPsCost = sTileCost + APBPConstants[AP_MODIFIER_SWAT]; break; case CRAWLING: diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index 0bb82c7b..c7ed8fb4 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -294,7 +294,11 @@ INT16 TerrainBreathPoints(SOLDIERTYPE * pSoldier, INT32 sGridNo, INT8 bDir, UINT return(0); } - if ( usMovementMode == WALKING_WEAPON_RDY || usMovementMode == WALKING_DUAL_RDY ) + if ( usMovementMode == WALKING_WEAPON_RDY || + usMovementMode == WALKING_DUAL_RDY || + usMovementMode == CROUCHEDMOVE_RIFLE_READY || + usMovementMode == CROUCHEDMOVE_DUAL_READY || + usMovementMode == CROUCHEDMOVE_PISTOL_READY ) { iPoints += APBPConstants[BP_MOVEMENT_READY]; } @@ -331,6 +335,12 @@ INT16 TerrainBreathPoints(SOLDIERTYPE * pSoldier, INT32 sGridNo, INT8 bDir, UINT case START_SWAT: case SWATTING: case SWAT_BACKWARDS: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: iPoints *= APBPConstants[BP_SWAT_ENERGYCOSTFACTOR]; break; case CRAWLING: iPoints *= APBPConstants[BP_CRAWL_ENERGYCOSTFACTOR]; break; @@ -451,6 +461,12 @@ INT16 ActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, UINT16 u case START_SWAT: case SWAT_BACKWARDS: case SWATTING: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: sPoints = sTileCost + APBPConstants[AP_MODIFIER_SWAT]; break; case CRAWLING: @@ -625,6 +641,12 @@ INT16 EstimateActionPointCost( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bDir, case SWATTING: case START_SWAT: case SWAT_BACKWARDS: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: // Add cost to stand once there BEFORE.... sPoints += GetAPsCrouch(pSoldier, TRUE); // SANDRO changed.. @@ -2736,6 +2758,9 @@ INT8 MinAPsToStartMovement( SOLDIERTYPE * pSoldier, UINT16 usMovementMode ) } break; case SWATTING: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: if (gAnimControl[ pSoldier->usAnimState ].ubEndHeight == ANIM_PRONE) { bAPs += GetAPsProne(pSoldier, TRUE); diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 99c3e3cd..406acba1 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -3363,7 +3363,7 @@ BOOLEAN SOLDIERTYPE::EVENT_InitNewSoldierAnim( UINT16 usNewState, UINT16 usStart { if ( usNewState == WALKING || usNewState == RUNNING || usNewState == SWATTING //*** ddd - || usNewState == SWATTING_WK ) + || usNewState == SWATTING_WK || usNewState == START_SWAT ) { // CHECK FOR SIDEWAYS! if ( !(this->flags.uiStatusFlags & SOLDIER_VEHICLE) && this->ubDirection == gPurpendicularDirection[this->ubDirection][this->pathing.usPathingData[this->pathing.usPathIndex]] ) @@ -3375,23 +3375,45 @@ BOOLEAN SOLDIERTYPE::EVENT_InitNewSoldierAnim( UINT16 usNewState, UINT16 usStart { if ( this->inv[HANDPOS].exists( ) == true && Item[usItem].usItemClass == IC_GUN && !Item[usItem].rocketlauncher ) { - if ( this->IsValidSecondHandShot( ) ) + if ( gAnimControl[this->usAnimState].ubEndHeight == ANIM_STAND ) { - usNewState = SIDE_STEP_DUAL_RDY; - } - else if ( gAnimControl[this->usAnimState].uiFlags & ANIM_ALT_WEAPON_HOLDING ) - { - usNewState = SIDE_STEP_ALTERNATIVE_RDY; - } - else - { - usNewState = SIDE_STEP_WEAPON_RDY; + if ( this->IsValidSecondHandShot() ) + { + usNewState = SIDE_STEP_DUAL_RDY; + } + else if ( gAnimControl[this->usAnimState].uiFlags & ANIM_ALT_WEAPON_HOLDING ) + { + usNewState = SIDE_STEP_ALTERNATIVE_RDY; + } + else + { + usNewState = SIDE_STEP_WEAPON_RDY; + } } } } else { - usNewState = SIDE_STEP; + if ( gAnimControl[this->usAnimState].ubEndHeight == ANIM_STAND ) + { + usNewState = SIDE_STEP; + } + // comment in once animations are ready + /*else if ( gAnimControl[this->usAnimState].ubEndHeight == ANIM_CROUCH ) + { + if ( this->IsValidSecondHandShot() ) + { + usNewState = SIDE_STEP_CROUCH_DUAL; + } + else if ( !Item[this->inv[HANDPOS].usItem].twohanded ) + { + usNewState = SIDE_STEP_CROUCH_PISTOL; + } + else + { + usNewState = SIDE_STEP_CROUCH_RIFLE; + } + }*/ } } else @@ -3467,26 +3489,43 @@ BOOLEAN SOLDIERTYPE::EVENT_InitNewSoldierAnim( UINT16 usNewState, UINT16 usStart } } // SANDRO - check if we are gonna move with weapon raised - else if ( ((gAnimControl[this->usAnimState].uiFlags & ANIM_FIREREADY) || - (gAnimControl[this->usAnimState].uiFlags & ANIM_FIRE)) && (usNewState == WALKING) && gGameExternalOptions.fAllowWalkingWithWeaponRaised ) + else if ( gGameExternalOptions.fAllowWalkingWithWeaponRaised && ( (gAnimControl[this->usAnimState].uiFlags & ANIM_FIREREADY) || (gAnimControl[this->usAnimState].uiFlags & ANIM_FIRE) ) ) { if ( this->inv[HANDPOS].exists( ) == true && Item[usItem].usItemClass == IC_GUN && !Item[usItem].rocketlauncher ) { - if ( this->IsValidSecondHandShot( ) ) + if ( usNewState == WALKING ) { - usNewState = WALKING_DUAL_RDY; + if (this->IsValidSecondHandShot()) + { + usNewState = WALKING_DUAL_RDY; + } + else if (gAnimControl[this->usAnimState].uiFlags & ANIM_ALT_WEAPON_HOLDING) + { + usNewState = WALKING_ALTERNATIVE_RDY; + } + else + { + usNewState = WALKING_WEAPON_RDY; + } } - else if ( gAnimControl[this->usAnimState].uiFlags & ANIM_ALT_WEAPON_HOLDING ) + else if (usNewState == SWATTING || usNewState == START_SWAT ) { - usNewState = WALKING_ALTERNATIVE_RDY; - } - else - { - usNewState = WALKING_WEAPON_RDY; + if ( this->IsValidSecondHandShot() ) + { + usNewState = CROUCHEDMOVE_DUAL_READY; + } + else if ( !Item[this->inv[HANDPOS].usItem].twohanded ) + { + usNewState = CROUCHEDMOVE_PISTOL_READY; + } + else + { + usNewState = CROUCHEDMOVE_RIFLE_READY; + } } } } - + // Turn off anipause flag for any anim! this->flags.uiStatusFlags &= (~SOLDIER_PAUSEANIMOVE); @@ -3704,7 +3743,6 @@ BOOLEAN SOLDIERTYPE::EVENT_InitNewSoldierAnim( UINT16 usNewState, UINT16 usStart // ONLY DO FOR EVERYONE BUT PLANNING GUYS if ( this->ubID < MAX_NUM_SOLDIERS ) { - // Do special things based on new state // CHRISL: Make changes so that we charge extra APs while wearing a backpack while using new inventory system switch ( usNewState ) @@ -3762,6 +3800,9 @@ BOOLEAN SOLDIERTYPE::EVENT_InitNewSoldierAnim( UINT16 usNewState, UINT16 usStart break; case SWATTING: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: this->usPendingAnimation = NO_PENDING_ANIMATION; this->aiData.ubPendingActionAnimCount = 0; @@ -7247,6 +7288,19 @@ void SOLDIERTYPE::SoldierGotoStationaryStance( void ) { this->EVENT_InitNewSoldierAnim( COWERING, 0, FALSE ); } + // Flugente: if we walk with our gun raised, we should still have it raised once we stop walking + else if (this->usAnimState == CROUCHEDMOVE_RIFLE_READY ) + { + this->EVENT_InitNewSoldierAnim(AIM_RIFLE_CROUCH, 0, FALSE); + } + else if (this->usAnimState == CROUCHEDMOVE_PISTOL_READY ) + { + this->EVENT_InitNewSoldierAnim(AIM_RIFLE_CROUCH, 0, FALSE); + } + else if (this->usAnimState == CROUCHEDMOVE_DUAL_READY) + { + this->EVENT_InitNewSoldierAnim(AIM_DUAL_CROUCH, 0, FALSE); + } else { this->EVENT_InitNewSoldierAnim( CROUCHING, 0, FALSE ); @@ -7331,8 +7385,16 @@ void SOLDIERTYPE::EVENT_InternalSetSoldierDestination( UINT16 usNewDirection, BO // OK, ATE: If we are side_stepping, calculate a NEW desired direction.... - if ( this->bReverse && (usAnimState == SIDE_STEP || usAnimState == ROLL_PRONE_R || usAnimState == ROLL_PRONE_L || usAnimState == SIDE_STEP_ALTERNATIVE_RDY - || usAnimState == SIDE_STEP_WEAPON_RDY || usAnimState == SIDE_STEP_DUAL_RDY) ) + if ( this->bReverse && + (usAnimState == SIDE_STEP || + usAnimState == ROLL_PRONE_R || + usAnimState == ROLL_PRONE_L || + usAnimState == SIDE_STEP_CROUCH_RIFLE || + usAnimState == SIDE_STEP_CROUCH_PISTOL || + usAnimState == SIDE_STEP_CROUCH_DUAL || + usAnimState == SIDE_STEP_ALTERNATIVE_RDY || + usAnimState == SIDE_STEP_WEAPON_RDY || + usAnimState == SIDE_STEP_DUAL_RDY) ) { UINT8 ubPerpDirection; @@ -7443,14 +7505,21 @@ void EVENT_InternalSetSoldierDesiredDirection( SOLDIERTYPE *pSoldier, UINT8 ubNe INT32 iBPCost = 0; //if ( usAnimState == WALK_BACKWARDS ) - if ( pSoldier->bReverse && (usAnimState != SIDE_STEP && usAnimState != ROLL_PRONE_R && usAnimState != ROLL_PRONE_L - && usAnimState != SIDE_STEP_WEAPON_RDY && usAnimState != SIDE_STEP_DUAL_RDY && usAnimState != SIDE_STEP_ALTERNATIVE_RDY) ) + if ( pSoldier->bReverse && + (usAnimState != SIDE_STEP && + usAnimState != ROLL_PRONE_R && + usAnimState != ROLL_PRONE_L && + usAnimState != SIDE_STEP_CROUCH_RIFLE && + usAnimState != SIDE_STEP_CROUCH_PISTOL && + usAnimState != SIDE_STEP_CROUCH_DUAL && + usAnimState != SIDE_STEP_WEAPON_RDY && + usAnimState != SIDE_STEP_DUAL_RDY && + usAnimState != SIDE_STEP_ALTERNATIVE_RDY) ) { // OK, check if we are going to go in the exact opposite than our facing.... ubNewDirection = gOppositeDirection[ubNewDirection]; } - - + pSoldier->pathing.bDesiredDirection = (INT8)ubNewDirection; // If we are prone, goto crouched first! @@ -8834,6 +8903,12 @@ void CalculateSoldierAniSpeed( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pStatsSoldier //***ddd case SWATTING_WK: case SWAT_BACKWARDS_WK: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: // Adjust based on body type if ( pStatsSoldier->ubBodyType <= REGFEMALE ) @@ -8916,10 +8991,16 @@ void CalculateSoldierAniSpeed( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pStatsSoldier case WALKING: case WALKING_WEAPON_RDY: case WALKING_DUAL_RDY: + case CROUCHEDMOVE_RIFLE_READY: + case CROUCHEDMOVE_PISTOL_READY: + case CROUCHEDMOVE_DUAL_READY: case WALKING_ALTERNATIVE_RDY: case RUNNING: case SWATTING: case SWATTING_WK: + case SIDE_STEP_CROUCH_RIFLE: + case SIDE_STEP_CROUCH_PISTOL: + case SIDE_STEP_CROUCH_DUAL: case SWAT_BACKWARDS_WK: // Flugente: background running speed reduces time needed: + is good, - is bad uiTerrainDelay = (uiTerrainDelay * (100 - pSoldier->GetBackgroundValue( BG_PERC_SPEED_RUNNING ))) / 100; @@ -14222,12 +14303,9 @@ void SelectMoveAnimationFromStance( SOLDIERTYPE *pSoldier ) case ANIM_CROUCH: pSoldier->EVENT_InitNewSoldierAnim( SWATTING, 0, FALSE ); break; - } - } - void GetActualSoldierAnimDims( SOLDIERTYPE *pSoldier, INT16 *psHeight, INT16 *psWidth ) { UINT16 usAnimSurface;