mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
New ammotype: cryo ammo deals no damage, but freezes a soldier for two turns (stackable effect). A frozen soldier cannot perform actions, and has drastically lowered damage resistance. For more info, see http://thepit.ja-galaxy-forum.com/index.php?t=msg&th=22926&start=0&
Requires GameDir >= r2284. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8034 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+9
-9
@@ -15,9 +15,9 @@
|
||||
#ifdef JA2EDITOR
|
||||
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.8034 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.8034 (Development Build)" };
|
||||
#endif
|
||||
|
||||
// ------------------------------
|
||||
@@ -27,11 +27,11 @@
|
||||
|
||||
//DEBUG BUILD VERSION
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.8034 (Development Build)" };
|
||||
#elif defined (JA113DEMO)
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.8034 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.8034 (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.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.8034 (Development Build)" };
|
||||
#elif defined (JA113DEMO)
|
||||
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.8034 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Release v1.13.8013 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release v1.13.8034 (Development Build)" };
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
CHAR8 czVersionNumber[16] = { "Build 16.01.09" }; //YY.MM.DD
|
||||
CHAR8 czVersionNumber[16] = { "Build 16.01.24" }; //YY.MM.DD
|
||||
CHAR16 zTrackingNumber[16] = { L"Z" };
|
||||
|
||||
// SAVE_GAME_VERSION is defined in header, change it there
|
||||
|
||||
+110
-24
@@ -97,6 +97,9 @@ static UINT16 FOCUSED_HTH_KICK_AnimationScript[MAX_FRAMES_PER_ANIM] = { 757,1,1,
|
||||
//static UINT16 LONG_JUMP_AnimationScript[MAX_FRAMES_PER_ANIM] = { 1,2,3,703,4,5,6,6,7,8,9,10,11,704,12,13,14,501,999,0,0,0,0 };
|
||||
static UINT16 LONG_JUMP_AnimationScript[MAX_FRAMES_PER_ANIM] = { 2,703,3,4,5,6,6,7,7,8,704,9,501,999,0,0,0,0 };
|
||||
|
||||
static UINT16 CRYO_DEATH_AnimationScript[MAX_FRAMES_PER_ANIM] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 465, 440, 497, 442, 0, 0, 0, 0};
|
||||
static UINT16 CRYO_DEATH_CROUCHED_AnimationScript[MAX_FRAMES_PER_ANIM] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 465, 440, 497, 442, 0, 0, 0, 0};
|
||||
|
||||
ANI_SPEED_DEF gubAnimCrawlSpeeds[ TOTALBODYTYPES ];
|
||||
//Block for anim file
|
||||
UINT16 gusAnimInst[ MAX_ANIMATIONS ][ MAX_FRAMES_PER_ANIM ];
|
||||
@@ -871,7 +874,7 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
|
||||
|
||||
//SOLDIER BRUN
|
||||
"FIRE FIRE" , 0, 150, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_FASTTURN | ANIM_NORESTART | ANIM_NONINTERRUPT | ANIM_NOCHANGE_WEAPON | ANIM_LIGHT_EFFORT | ANIM_IGNORE_AUTOSTANCE | ANIM_ATTACK, ANIM_STAND, ANIM_STAND, -1,
|
||||
|
||||
|
||||
//AI TRIGGER
|
||||
"AI TRIGGER" , 0, 70, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_FASTTURN | ANIM_NORESTART | ANIM_LOWER_WEAPON | ANIM_LIGHT_EFFORT, ANIM_STAND, ANIM_STAND, -1,
|
||||
|
||||
@@ -1075,7 +1078,12 @@ ANIMCONTROLTYPE gAnimControl[ NUMANIMATIONSTATES ] =
|
||||
{"FOCUSED HTH KICK" , 0, 40, (FLOAT)0, ANIM_STATIONARY | ANIM_TURNING | ANIM_NONINTERRUPT | ANIM_MODERATE_EFFORT | ANIM_NOCHANGE_WEAPON | ANIM_NORESTART | ANIM_ATTACK, ANIM_STAND, ANIM_STAND, -1},
|
||||
|
||||
// LONG JUMP
|
||||
"LONG JUMP" , 0, 100, (FLOAT)3.4, ANIM_SPECIALMOVE | ANIM_NORESTART | ANIM_LOWER_WEAPON | ANIM_MODERATE_EFFORT | ANIM_TURNING, ANIM_STAND, ANIM_STAND, -1,
|
||||
{"LONG JUMP" , 0, 100, (FLOAT)3.4, ANIM_SPECIALMOVE | ANIM_NORESTART | ANIM_LOWER_WEAPON | ANIM_MODERATE_EFFORT | ANIM_TURNING, ANIM_STAND, ANIM_STAND, -1},
|
||||
|
||||
// CRYO_DEATH
|
||||
{"CRYO_DEATH", 0, 150, (FLOAT)0, ANIM_STATIONARY | ANIM_NOMOVE_MARKER | ANIM_NO_EFFORT | ANIM_NONINTERRUPT | ANIM_NOCHANGE_WEAPON | ANIM_IGNORE_AUTOSTANCE | ANIM_ATTACK, ANIM_STAND, ANIM_STAND, -1},
|
||||
// CRYO_DEATH_CROUCHED
|
||||
{"CRYO_DEATH_CROUCHED", 0, 150, (FLOAT)0, ANIM_STATIONARY | ANIM_NOMOVE_MARKER | ANIM_NO_EFFORT | ANIM_NONINTERRUPT | ANIM_NOCHANGE_WEAPON | ANIM_IGNORE_AUTOSTANCE | ANIM_ATTACK, ANIM_CROUCH, ANIM_CROUCH, -1},
|
||||
|
||||
};
|
||||
|
||||
@@ -1519,7 +1527,9 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ REGMALE ][ FOCUSED_HTH_KICK ] = RGMKICKDOOR;
|
||||
|
||||
gubAnimSurfaceIndex[ REGMALE ][ LONG_JUMP ] = RGMJUMPOVER;
|
||||
|
||||
gubAnimSurfaceIndex[ REGMALE ][ CRYO_DEATH ] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[ REGMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceMidWaterSubIndex[ REGMALE ][ STANDING][0] = RGMWATER_R_STD;
|
||||
gubAnimSurfaceMidWaterSubIndex[ REGMALE ][ WALKING ][0] = RGMWATER_R_WALK;
|
||||
gubAnimSurfaceMidWaterSubIndex[ REGMALE ][ RUNNING ][0] = RGMWATER_R_WALK;
|
||||
@@ -1680,7 +1690,9 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceCorpseID[ REGMALE ][ PRONE_LAYFROMHIT_STOP ] = SMERC_PRN;
|
||||
gubAnimSurfaceCorpseID[ REGMALE ][ CHARIOTS_OF_FIRE ] = BURNT_DEAD;
|
||||
gubAnimSurfaceCorpseID[ REGMALE ][ BODYEXPLODING ] = EXPLODE_DEAD;
|
||||
|
||||
gubAnimSurfaceCorpseID[ REGMALE ][ CRYO_DEATH ] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[ REGMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_CORPSE;
|
||||
|
||||
|
||||
// BIG MALE GUY
|
||||
gubAnimSurfaceIndex[ BIGMALE ][ WALKING ] = BGMWALKING;
|
||||
@@ -1958,8 +1970,10 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ BIGMALE ][ HTH_KICK ] = BGMKICKDOOR;
|
||||
gubAnimSurfaceIndex[ BIGMALE ][ FOCUSED_HTH_KICK ] = BGMKICKDOOR;
|
||||
|
||||
gubAnimSurfaceIndex[ BIGMALE ][ LONG_JUMP ] = BGMJUMPOVER;
|
||||
|
||||
gubAnimSurfaceIndex[ BIGMALE ][ LONG_JUMP ] = BGMJUMPOVER;
|
||||
gubAnimSurfaceIndex[ BIGMALE ][ CRYO_DEATH ] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[ BIGMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceItemSubIndex[ BIGMALE ][ STANDING ] = BGMPISTOLBREATH;
|
||||
gubAnimSurfaceItemSubIndex[ BIGMALE ][ WALKING ] = BGMNOTHING_WALK;
|
||||
gubAnimSurfaceItemSubIndex[ BIGMALE ][ RUNNING ] = BGMNOTHING_RUN;
|
||||
@@ -2141,7 +2155,9 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceCorpseID[ BIGMALE ][ PRONE_LAYFROMHIT_STOP ] = MMERC_PRN;
|
||||
gubAnimSurfaceCorpseID[ BIGMALE ][ CHARIOTS_OF_FIRE ] = BURNT_DEAD;
|
||||
gubAnimSurfaceCorpseID[ BIGMALE ][ BODYEXPLODING ] = EXPLODE_DEAD;
|
||||
|
||||
gubAnimSurfaceCorpseID[ BIGMALE ][ CRYO_DEATH ] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[ BIGMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_CORPSE;
|
||||
|
||||
|
||||
// STOCKY MALE GUY
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ WALKING ] = RGMBASICWALKING;
|
||||
@@ -2330,7 +2346,7 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ AI_RADIO ] = RGMRADIO;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ AI_CR_RADIO ] = RGMCRRADIO;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ SLAP_HIT ] = RGMHITSTAND;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ TAKE_BLOOD_FROM_CORPSE ] = RGMMEDIC;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ TAKE_BLOOD_FROM_CORPSE ] = RGMMEDIC;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ CHARIOTS_OF_FIRE ] = RGMBURN;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ AI_PULL_SWITCH ] = RGMOPEN;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ MERC_HURT_IDLE_ANIM ] = RGMHURTSTANDINGR;
|
||||
@@ -2420,7 +2436,9 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ FOCUSED_HTH_KICK ] = RGMKICKDOOR;
|
||||
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ LONG_JUMP ] = RGMJUMPOVER;
|
||||
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ CRYO_DEATH ] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[ STOCKYMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceItemSubIndex[ STOCKYMALE ][ STANDING ] = RGMPISTOLBREATH;
|
||||
gubAnimSurfaceItemSubIndex[ STOCKYMALE ][ WALKING ] = RGMNOTHING_WALK;
|
||||
gubAnimSurfaceItemSubIndex[ STOCKYMALE ][ RUNNING] = RGMNOTHING_RUN;
|
||||
@@ -2536,9 +2554,11 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ STAND_FALLFORWARD_STOP ] = SMERC_FWD;
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ FALLBACKHIT_STOP ] = SMERC_BCK;
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ PRONE_LAYFROMHIT_STOP ] = SMERC_PRN;
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ CHARIOTS_OF_FIRE ] = BURNT_DEAD;
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ CHARIOTS_OF_FIRE ] = BURNT_DEAD;
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ BODYEXPLODING ] = EXPLODE_DEAD;
|
||||
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ CRYO_DEATH ] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[ STOCKYMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_CORPSE;
|
||||
|
||||
|
||||
//Setup some random stuff
|
||||
gRandomAnimDefs[ STOCKYMALE ][ 0 ].ubHandRestriction = RANDOM_ANIM_RIFLEINHAND;
|
||||
@@ -2854,7 +2874,9 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ REGFEMALE ][ FOCUSED_HTH_KICK ] = RGFKICKDOOR;
|
||||
|
||||
gubAnimSurfaceIndex[ REGFEMALE ][ LONG_JUMP ] = RGFJUMPOVER;
|
||||
|
||||
gubAnimSurfaceIndex[ REGFEMALE ][ CRYO_DEATH ] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[ REGFEMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceItemSubIndex[ REGFEMALE ][ STANDING ] = RGFPISTOLBREATH;
|
||||
gubAnimSurfaceItemSubIndex[ REGFEMALE ][ WALKING ] = RGFNOTHING_WALK;
|
||||
gubAnimSurfaceItemSubIndex[ REGFEMALE ][ RUNNING ] = RGFNOTHING_RUN;
|
||||
@@ -2970,7 +2992,9 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceCorpseID[ REGFEMALE ][ PRONE_LAYFROMHIT_STOP ] = FMERC_PRN;
|
||||
gubAnimSurfaceCorpseID[ REGFEMALE ][ CHARIOTS_OF_FIRE ] = BURNT_DEAD;
|
||||
gubAnimSurfaceCorpseID[ REGFEMALE ][ BODYEXPLODING ] = EXPLODE_DEAD;
|
||||
|
||||
gubAnimSurfaceCorpseID[ REGFEMALE ][ CRYO_DEATH ] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[ REGFEMALE ][ CRYO_DEATH_CROUCHED ] = CRYO_CORPSE;
|
||||
|
||||
|
||||
//Setup some random stuff
|
||||
gRandomAnimDefs[ REGFEMALE ][ 0 ].ubHandRestriction = RANDOM_ANIM_RIFLEINHAND;
|
||||
@@ -3036,8 +3060,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ ADULTFEMALEMONSTER ][ MONSTER_JUMP ] = AFMJUMP;
|
||||
gubAnimSurfaceIndex[ ADULTFEMALEMONSTER ][ MONSTER_MELT ] = AFMMELT;
|
||||
gubAnimSurfaceIndex[ ADULTFEMALEMONSTER ][ MONSTER_WALK_BACKWARDS ] = AFMONSTERWALKING;
|
||||
gubAnimSurfaceIndex[ADULTFEMALEMONSTER][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[ADULTFEMALEMONSTER][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ ADULTFEMALEMONSTER ][ MONSTER_MELT ] = ADULTMONSTER_DEAD;
|
||||
gubAnimSurfaceCorpseID[ADULTFEMALEMONSTER][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[ADULTFEMALEMONSTER][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
// Adult male
|
||||
gubAnimSurfaceIndex[ AM_MONSTER ][ STANDING ] = AFMONSTERSTANDING;
|
||||
@@ -3058,8 +3086,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ AM_MONSTER ][ MONSTER_JUMP ] = AFMJUMP;
|
||||
gubAnimSurfaceIndex[ AM_MONSTER ][ MONSTER_MELT ] = AFMMELT;
|
||||
gubAnimSurfaceIndex[ AM_MONSTER ][ MONSTER_WALK_BACKWARDS ] = AFMONSTERWALKING;
|
||||
gubAnimSurfaceIndex[AM_MONSTER][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[AM_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ AM_MONSTER ][ MONSTER_MELT ] = ADULTMONSTER_DEAD;
|
||||
gubAnimSurfaceCorpseID[AM_MONSTER][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[AM_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
// Young adult female
|
||||
gubAnimSurfaceIndex[ YAF_MONSTER ][ STANDING ] = AFMONSTERSTANDING;
|
||||
@@ -3080,8 +3112,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ YAF_MONSTER ][ MONSTER_JUMP ] = AFMJUMP;
|
||||
gubAnimSurfaceIndex[ YAF_MONSTER ][ MONSTER_MELT] = AFMMELT;
|
||||
gubAnimSurfaceIndex[ YAF_MONSTER ][ MONSTER_WALK_BACKWARDS ] = AFMONSTERWALKING;
|
||||
gubAnimSurfaceIndex[YAF_MONSTER][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[YAF_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ YAF_MONSTER ][ MONSTER_MELT ] = ADULTMONSTER_DEAD;
|
||||
gubAnimSurfaceCorpseID[YAF_MONSTER][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[YAF_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
|
||||
// Young adult male
|
||||
@@ -3103,17 +3139,24 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ YAM_MONSTER ][ MONSTER_JUMP ] = AFMJUMP;
|
||||
gubAnimSurfaceIndex[ YAM_MONSTER ][ MONSTER_MELT ] = AFMMELT;
|
||||
gubAnimSurfaceIndex[ YAM_MONSTER ][ MONSTER_WALK_BACKWARDS ] = AFMONSTERWALKING;
|
||||
gubAnimSurfaceIndex[YAM_MONSTER][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[YAM_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ YAM_MONSTER ][ MONSTER_MELT ] = ADULTMONSTER_DEAD;
|
||||
|
||||
gubAnimSurfaceCorpseID[YAM_MONSTER][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[YAM_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gubAnimSurfaceIndex[ LARVAE_MONSTER ][ LARVAE_BREATH ] = LVBREATH;
|
||||
gubAnimSurfaceIndex[ LARVAE_MONSTER ][ LARVAE_HIT ] = LVDIE;
|
||||
gubAnimSurfaceIndex[ LARVAE_MONSTER ][ LARVAE_DIE ] = LVDIE;
|
||||
gubAnimSurfaceIndex[ LARVAE_MONSTER ][ LARVAE_DIE_STOP ] = LVDIE;
|
||||
gubAnimSurfaceIndex[ LARVAE_MONSTER ][ LARVAE_WALK ] = LVWALK;
|
||||
gubAnimSurfaceIndex[LARVAE_MONSTER][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[LARVAE_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ LARVAE_MONSTER ][ LARVAE_DIE ] = LARVAEMONSTER_DEAD;
|
||||
gubAnimSurfaceCorpseID[LARVAE_MONSTER][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[LARVAE_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gubAnimSurfaceIndex[ INFANT_MONSTER ][ STANDING ] = IBREATH;
|
||||
gubAnimSurfaceIndex[ INFANT_MONSTER ][ RUNNING ] = IWALK;
|
||||
@@ -3126,9 +3169,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ INFANT_MONSTER ][ INFANT_EATTING_FLESH ] = IEAT;
|
||||
gubAnimSurfaceIndex[ INFANT_MONSTER ][ INFANT_END_EATTING_FLESH ] = IEAT;
|
||||
gubAnimSurfaceIndex[ INFANT_MONSTER ][ WALK_BACKWARDS ] = IWALK;
|
||||
|
||||
gubAnimSurfaceIndex[INFANT_MONSTER][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[INFANT_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ INFANT_MONSTER ][ INFANT_DIE ] = INFANTMONSTER_DEAD;
|
||||
gubAnimSurfaceCorpseID[INFANT_MONSTER][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[INFANT_MONSTER][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
|
||||
gubAnimSurfaceIndex[ QUEENMONSTER ][ QUEEN_MONSTER_BREATHING ] = QUEENMONSTERSTANDING;
|
||||
@@ -3141,9 +3187,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ QUEENMONSTER ][ QUEEN_END_READY ] = QUEENMONSTERREADY;
|
||||
gubAnimSurfaceIndex[ QUEENMONSTER ][ QUEEN_SPIT ] = QUEENMONSTERSPIT_SW;
|
||||
gubAnimSurfaceIndex[ QUEENMONSTER ][ QUEEN_SWIPE ] = QUEENMONSTERSWIPE;
|
||||
gubAnimSurfaceIndex[QUEENMONSTER][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[QUEENMONSTER][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ QUEENMONSTER ][ QUEEN_DIE ] = QUEEN_MONSTER_DEAD;
|
||||
|
||||
gubAnimSurfaceCorpseID[QUEENMONSTER][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[QUEENMONSTER][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
//////
|
||||
// FAT GUY
|
||||
@@ -3172,9 +3221,13 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ FATCIV ][ END_COWER ] = FATMANCOWER;
|
||||
gubAnimSurfaceIndex[ FATCIV ][ CIV_DIE2 ] = FATMANDIE2;
|
||||
gubAnimSurfaceIndex[ FATCIV ][ CIV_COWER_HIT ] = FATMANCOWERHIT;
|
||||
gubAnimSurfaceIndex[FATCIV][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[FATCIV][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ FATCIV ][ GENERIC_HIT_DEATH ] = FT_DEAD1;
|
||||
gubAnimSurfaceCorpseID[ FATCIV ][ CIV_DIE2 ] = FT_DEAD2;
|
||||
gubAnimSurfaceCorpseID[FATCIV][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[FATCIV][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gRandomAnimDefs[ FATCIV ][ 0 ].ubHandRestriction = RANDOM_ANIM_IRRELEVENTINHAND;
|
||||
gRandomAnimDefs[ FATCIV ][ 0 ].sAnimID = FATCIV_ASS_SCRATCH;
|
||||
@@ -3215,11 +3268,13 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ MANCIV ][ END_OPENSTRUCT ] = MANCIVACT;
|
||||
gubAnimSurfaceIndex[ MANCIV ][ END_OPENSTRUCT_LOCKED ] = MANCIVACT;
|
||||
gubAnimSurfaceIndex[ MANCIV ][ CIV_COWER_HIT ] = MANCIVCOWERHIT;
|
||||
|
||||
gubAnimSurfaceIndex[MANCIV][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[MANCIV ][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ MANCIV ][ GENERIC_HIT_DEATH ] = M_DEAD1;
|
||||
gubAnimSurfaceCorpseID[ MANCIV ][ CIV_DIE2 ] = M_DEAD2;
|
||||
|
||||
gubAnimSurfaceCorpseID[MANCIV][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[MANCIV][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
// mini skirt civ
|
||||
gubAnimSurfaceIndex[ MINICIV ][ STANDING ] = MINICIVSTANDING;
|
||||
@@ -3247,10 +3302,13 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ MINICIV ][ END_COWER ] = MINICOWER;
|
||||
gubAnimSurfaceIndex[ MINICIV ][ CIV_DIE2 ] = MINIDIE2;
|
||||
gubAnimSurfaceIndex[ MINICIV ][ CIV_COWER_HIT ] = MINICOWERHIT;
|
||||
gubAnimSurfaceIndex[MINICIV][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[MINICIV][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ MINICIV ][ GENERIC_HIT_DEATH ] = S_DEAD1;
|
||||
gubAnimSurfaceCorpseID[ MINICIV ][ CIV_DIE2 ] = S_DEAD2;
|
||||
|
||||
gubAnimSurfaceCorpseID[MINICIV][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[MINICIV][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gRandomAnimDefs[ MINICIV ][ 0 ].ubHandRestriction = RANDOM_ANIM_IRRELEVENTINHAND;
|
||||
gRandomAnimDefs[ MINICIV ][ 0 ].sAnimID = MINIGIRL_STOCKING;
|
||||
@@ -3285,9 +3343,13 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ DRESSCIV ][ END_COWER ] = DRESSCIVCOWER;
|
||||
gubAnimSurfaceIndex[ DRESSCIV ][ CIV_DIE2 ] = DRESSCIVDIE2;
|
||||
gubAnimSurfaceIndex[ DRESSCIV ][ CIV_COWER_HIT ] = DRESSCIVCOWERHIT;
|
||||
gubAnimSurfaceIndex[DRESSCIV][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[DRESSCIV][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ DRESSCIV ][ GENERIC_HIT_DEATH ] = W_DEAD1;
|
||||
gubAnimSurfaceCorpseID[ DRESSCIV ][ CIV_DIE2 ] = W_DEAD2;
|
||||
gubAnimSurfaceCorpseID[DRESSCIV][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[DRESSCIV][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
// HATKID civ
|
||||
gubAnimSurfaceIndex[ HATKIDCIV ][ STANDING ] = HATKIDCIVSTANDING;
|
||||
@@ -3319,10 +3381,13 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ HATKIDCIV ][ CIV_DIE2 ] = HATKIDCIVDIE2;
|
||||
gubAnimSurfaceIndex[ HATKIDCIV ][ CIV_COWER_HIT ] = HATKIDCIVCOWERHIT;
|
||||
gubAnimSurfaceIndex[ HATKIDCIV ][ KID_SKIPPING ] = HATKIDCIVSKIP;
|
||||
|
||||
gubAnimSurfaceIndex[HATKIDCIV][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[HATKIDCIV][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ HATKIDCIV ][ GENERIC_HIT_DEATH ] = H_DEAD1;
|
||||
gubAnimSurfaceCorpseID[ HATKIDCIV ][ CIV_DIE2 ] = H_DEAD2;
|
||||
gubAnimSurfaceCorpseID[HATKIDCIV][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[HATKIDCIV][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gRandomAnimDefs[ HATKIDCIV ][ 0 ].ubHandRestriction = RANDOM_ANIM_IRRELEVENTINHAND;
|
||||
gRandomAnimDefs[ HATKIDCIV ][ 0 ].sAnimID = HATKID_YOYO;
|
||||
@@ -3362,10 +3427,13 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ KIDCIV ][ CIV_DIE2 ] = KIDCIVDIE2;
|
||||
gubAnimSurfaceIndex[ KIDCIV ][ CIV_COWER_HIT ] = KIDCIVCOWERHIT;
|
||||
gubAnimSurfaceIndex[ KIDCIV ][ KID_SKIPPING ] = KIDCIVSKIP;
|
||||
gubAnimSurfaceIndex[KIDCIV][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[KIDCIV][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ KIDCIV ][ GENERIC_HIT_DEATH ] = K_DEAD1;
|
||||
gubAnimSurfaceCorpseID[ KIDCIV ][ CIV_DIE2 ] = K_DEAD2;
|
||||
|
||||
gubAnimSurfaceCorpseID[KIDCIV][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[KIDCIV][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gRandomAnimDefs[ KIDCIV ][ 0 ].ubHandRestriction = RANDOM_ANIM_IRRELEVENTINHAND;
|
||||
gRandomAnimDefs[ KIDCIV ][ 0 ].sAnimID = KID_ARMPIT;
|
||||
@@ -3389,8 +3457,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ CRIPPLECIV ][ CRIPPLE_CLOSE_DOOR ] = CRIPCIVBEG;
|
||||
gubAnimSurfaceIndex[ CRIPPLECIV ][ CRIPPLE_END_OPEN_DOOR ] = CRIPCIVBEG;
|
||||
gubAnimSurfaceIndex[ CRIPPLECIV ][ CRIPPLE_END_OPEN_LOCKED_DOOR ] = CRIPCIVBEG;
|
||||
gubAnimSurfaceIndex[CRIPPLECIV][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[CRIPPLECIV][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ CRIPPLECIV ][ CRIPPLE_DIE ] = SMERC_BCK;
|
||||
gubAnimSurfaceCorpseID[CRIPPLECIV][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[CRIPPLECIV][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gRandomAnimDefs[ CRIPPLECIV ][ 0 ].ubHandRestriction = RANDOM_ANIM_IRRELEVENTINHAND;
|
||||
gRandomAnimDefs[ CRIPPLECIV ][ 0 ].sAnimID = CRIPPLE_BEG;
|
||||
@@ -3407,9 +3479,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ COW ][ COW_HIT ] = COWDIE;
|
||||
gubAnimSurfaceIndex[ COW ][ COW_DYING ] = COWDIE;
|
||||
gubAnimSurfaceIndex[ COW ][ COW_DYING_STOP ] = COWDIE;
|
||||
gubAnimSurfaceIndex[COW][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[COW][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ COW ][ COW_DYING ] = COW_DEAD;
|
||||
|
||||
gubAnimSurfaceCorpseID[COW][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[COW][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
gRandomAnimDefs[ COW ][ 0 ].ubHandRestriction = RANDOM_ANIM_IRRELEVENTINHAND;
|
||||
gRandomAnimDefs[ COW ][ 0 ].sAnimID = COW_EATING;
|
||||
@@ -3476,8 +3551,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ BLOODCAT ][ BLOODCAT_SWIPE ] = CATSWIPE;
|
||||
gubAnimSurfaceIndex[ BLOODCAT ][ BLOODCAT_BITE_ANIM ] = CATBITE;
|
||||
gubAnimSurfaceIndex[ BLOODCAT ][ BLOODCAT_WALK_BACKWARDS ] = CATWALK;
|
||||
gubAnimSurfaceIndex[BLOODCAT][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[BLOODCAT][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ BLOODCAT ][ BLOODCAT_DYING ] = BLOODCAT_DEAD;
|
||||
gubAnimSurfaceCorpseID[BLOODCAT][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[BLOODCAT][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
// ROBOT
|
||||
gubAnimSurfaceIndex[ ROBOTNOWEAPON ][ STANDING ] = ROBOTNWBREATH;
|
||||
@@ -3489,8 +3568,12 @@ void InitAnimationSurfacesPerBodytype( )
|
||||
gubAnimSurfaceIndex[ ROBOTNOWEAPON ][ ROBOT_SHOOT ] = ROBOTNWSHOOT;
|
||||
gubAnimSurfaceIndex[ ROBOTNOWEAPON ][ ROBOT_BURST_SHOOT ] = ROBOTNWSHOOT;
|
||||
gubAnimSurfaceIndex[ ROBOTNOWEAPON ][ ROBOT_CAMERA_NOT_MOVING ] = ROBOTNWBREATH;
|
||||
gubAnimSurfaceCorpseID[ ROBOTNOWEAPON ][ ROBOTNW_DIE ] = ROBOT_DEAD;
|
||||
gubAnimSurfaceIndex[ROBOTNOWEAPON][CRYO_DEATH] = CRYO_EXPLODE;
|
||||
gubAnimSurfaceIndex[ROBOTNOWEAPON][CRYO_DEATH_CROUCHED] = CRYO_EXPLODE_CROUCHED;
|
||||
|
||||
gubAnimSurfaceCorpseID[ ROBOTNOWEAPON ][ ROBOTNW_DIE ] = ROBOT_DEAD;
|
||||
gubAnimSurfaceCorpseID[ROBOTNOWEAPON][CRYO_DEATH] = CRYO_CORPSE;
|
||||
gubAnimSurfaceCorpseID[ROBOTNOWEAPON][CRYO_DEATH_CROUCHED] = CRYO_CORPSE;
|
||||
|
||||
|
||||
// HUMVEE
|
||||
@@ -3656,6 +3739,9 @@ BOOLEAN LoadAnimationStateInstructions( )
|
||||
|
||||
memcpy(gusAnimInst[LONG_JUMP],LONG_JUMP_AnimationScript,sizeof(LONG_JUMP_AnimationScript));
|
||||
|
||||
memcpy( gusAnimInst[CRYO_DEATH], CRYO_DEATH_AnimationScript, sizeof(CRYO_DEATH_AnimationScript) );
|
||||
memcpy( gusAnimInst[CRYO_DEATH_CROUCHED], CRYO_DEATH_CROUCHED_AnimationScript, sizeof(CRYO_DEATH_CROUCHED_AnimationScript) );
|
||||
|
||||
// NOTE: Careful here... keep in mind you have to increase MAX_ANIMATIONS whenever you would go over 399(currently) animation numbers
|
||||
|
||||
return( TRUE );
|
||||
@@ -3835,7 +3921,7 @@ INT8 GetBodyTypePaletteSubstitutionCode( SOLDIERTYPE *pSoldier, UINT8 ubBodyType
|
||||
if ( pSoldier != NULL )
|
||||
{
|
||||
// Are we on fire?
|
||||
if ( pSoldier->usAnimState == CHARIOTS_OF_FIRE || pSoldier->usAnimState == BODYEXPLODING )
|
||||
if ( pSoldier->usAnimState == CHARIOTS_OF_FIRE || pSoldier->usAnimState == BODYEXPLODING || pSoldier->usAnimState == CRYO_DEATH || pSoldier->usAnimState == CRYO_DEATH_CROUCHED )
|
||||
{
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
@@ -494,7 +494,7 @@ enum AnimationStates
|
||||
QUEEN_FRUSTRATED_SLAP,
|
||||
|
||||
CHARIOTS_OF_FIRE,
|
||||
|
||||
|
||||
AI_PULL_SWITCH,
|
||||
|
||||
MONSTER_MELT,
|
||||
@@ -608,6 +608,9 @@ enum AnimationStates
|
||||
FOCUSED_HTH_KICK,
|
||||
|
||||
LONG_JUMP,
|
||||
|
||||
CRYO_DEATH,
|
||||
CRYO_DEATH_CROUCHED,
|
||||
|
||||
NUMANIMATIONSTATES
|
||||
|
||||
|
||||
@@ -313,6 +313,8 @@ AnimationSurfaceType gAnimSurfaceDatabase[ NUMANIMATIONSURFACETYPES ] =
|
||||
RGFCROWBAR, "ANIMS\\F_MERC\\F_CROBAR.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
RGFJUMPOVER, "ANIMS\\F_MERC\\F_N_RUN.STI", NO_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
|
||||
CRYO_EXPLODE, "ANIMS\\S_MERC\\S_CRYO_DEATH_S.STI", S_STRUCT, 0, 1, TO_INIT, NULL, NULL, 0, -1,
|
||||
CRYO_EXPLODE_CROUCHED, "ANIMS\\S_MERC\\S_CRYO_DEATH_C.STI", S_STRUCT, 0, 1, TO_INIT, NULL, NULL, 0, -1,
|
||||
|
||||
AFMONSTERSTANDING, "ANIMS\\MONSTERS\\MN_BREAT.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
AFMONSTERWALKING, "ANIMS\\MONSTERS\\MN_WALK.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
@@ -570,7 +572,7 @@ AnimationSurfaceType gAnimSurfaceDatabase[ NUMANIMATIONSURFACETYPES ] =
|
||||
|
||||
RGM_PFSHOT_AIM, "ANIMS\\S_MERC\\S_N_SHOT.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
BGM_PFSHOT_AIM, "ANIMS\\M_MERC\\M_N_SHOT.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
RGF_PFSHOT_AIM, "ANIMS\\F_MERC\\1_HND_N.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
RGF_PFSHOT_AIM, "ANIMS\\F_MERC\\1_HND_N.STI", S_STRUCT, 0, 8, TO_INIT, NULL, NULL, 0, -1,
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -352,6 +352,9 @@ typedef enum
|
||||
RGFCROWBAR,
|
||||
RGFJUMPOVER,
|
||||
|
||||
CRYO_EXPLODE,
|
||||
CRYO_EXPLODE_CROUCHED,
|
||||
|
||||
AFMONSTERSTANDING,
|
||||
AFMONSTERWALKING,
|
||||
AFMONSTERATTACK,
|
||||
@@ -601,7 +604,7 @@ BGMWITHSTONE,
|
||||
RGM_PFSHOT_AIM,
|
||||
BGM_PFSHOT_AIM,
|
||||
RGF_PFSHOT_AIM,
|
||||
|
||||
|
||||
NUMANIMATIONSURFACETYPES
|
||||
|
||||
} AnimationSurfaceTypes;
|
||||
|
||||
@@ -1476,28 +1476,25 @@ BOOLEAN GetSnitchDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, UINT32 iData
|
||||
BOOLEAN DelayedTacticalCharacterDialogue( SOLDIERTYPE *pSoldier, UINT16 usQuoteNum )
|
||||
{
|
||||
if ( pSoldier->ubProfile == NO_PROFILE )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
if (pSoldier->stats.bLife < CONSCIOUSNESS )
|
||||
return( FALSE );
|
||||
return( FALSE );
|
||||
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
return FALSE;
|
||||
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED )
|
||||
return( FALSE );
|
||||
|
||||
if ( (AM_A_ROBOT( pSoldier )) )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
if (pSoldier->stats.bLife < OKLIFE && usQuoteNum != QUOTE_SERIOUSLY_WOUNDED )
|
||||
return( FALSE );
|
||||
return( FALSE );
|
||||
|
||||
if( pSoldier->bAssignment == ASSIGNMENT_POW )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
return( CharacterDialogue( pSoldier->ubProfile, usQuoteNum, pSoldier->iFaceIndex, DIALOGUE_TACTICAL_UI, TRUE, TRUE ) );
|
||||
}
|
||||
@@ -1513,11 +1510,13 @@ BOOLEAN TacticalCharacterDialogueWithSpecialEvent( SOLDIERTYPE *pSoldier, UINT16
|
||||
if ( uiFlag != DIALOGUE_SPECIAL_EVENT_DO_BATTLE_SND && uiData1 != BATTLE_SOUND_DIE1 )
|
||||
{
|
||||
if (pSoldier->stats.bLife < CONSCIOUSNESS )
|
||||
return( FALSE );
|
||||
return( FALSE );
|
||||
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
return FALSE;
|
||||
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED )
|
||||
return( FALSE );
|
||||
|
||||
}
|
||||
|
||||
return( CharacterDialogueWithSpecialEvent( pSoldier->ubProfile, usQuoteNum, pSoldier->iFaceIndex, DIALOGUE_TACTICAL_UI, TRUE, FALSE, uiFlag, uiData1, uiData2 ) );
|
||||
@@ -1533,7 +1532,10 @@ BOOLEAN TacticalCharacterDialogueWithSpecialEventEx( SOLDIERTYPE *pSoldier, UINT
|
||||
if ( uiFlag != DIALOGUE_SPECIAL_EVENT_DO_BATTLE_SND && uiData1 != BATTLE_SOUND_DIE1 )
|
||||
{
|
||||
if (pSoldier->stats.bLife < CONSCIOUSNESS )
|
||||
return( FALSE );
|
||||
return( FALSE );
|
||||
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
return FALSE;
|
||||
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED )
|
||||
return( FALSE );
|
||||
@@ -1578,7 +1580,10 @@ BOOLEAN TacticalCharacterDialogue( SOLDIERTYPE *pSoldier, UINT16 usQuoteNum )
|
||||
}
|
||||
#endif
|
||||
if (pSoldier->stats.bLife < CONSCIOUSNESS )
|
||||
return( FALSE );
|
||||
return( FALSE );
|
||||
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
return FALSE;
|
||||
|
||||
if (pSoldier->stats.bLife < OKLIFE && usQuoteNum != QUOTE_SERIOUSLY_WOUNDED )
|
||||
return( FALSE );
|
||||
@@ -1931,6 +1936,9 @@ BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
return FALSE;
|
||||
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_GASSED )
|
||||
return( FALSE );
|
||||
|
||||
|
||||
+55
-43
@@ -1698,7 +1698,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
|
||||
{
|
||||
pSoldier = MercPtrs[ pFace->ubSoldierID ];
|
||||
|
||||
if ( ( MercPtrs[ pFace->ubSoldierID ]->stats.bLife < CONSCIOUSNESS || MercPtrs[ pFace->ubSoldierID ]->flags.fDeadPanel ) )
|
||||
if ( (MercPtrs[pFace->ubSoldierID]->stats.bLife < CONSCIOUSNESS || MercPtrs[pFace->ubSoldierID]->flags.fDeadPanel ) )
|
||||
{
|
||||
// Blit Closed eyes here!
|
||||
BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL );
|
||||
@@ -1713,6 +1713,16 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
|
||||
BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL );
|
||||
}
|
||||
|
||||
// Flugente: frozen soldiers are, well, frozen
|
||||
if ( MercPtrs[pFace->ubSoldierID]->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
{
|
||||
// Blit Closed eyes here!
|
||||
BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 2, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL );
|
||||
|
||||
// Blit hatch!
|
||||
BltVideoObjectFromIndex( uiRenderBuffer, guiHATCH, 0, sFaceX, sFaceY, VO_BLT_SRCTRANSPARENCY, NULL );
|
||||
}
|
||||
|
||||
if ( ( pSoldier->flags.uiStatusFlags & SOLDIER_DEAD ) )
|
||||
{
|
||||
// IF we are in the process of doing any deal/close animations, show face, not skill...
|
||||
@@ -2886,51 +2896,52 @@ void HandleAutoFaces( )
|
||||
pFace->fOldShowMoveHilight = FALSE;
|
||||
}
|
||||
|
||||
if ( pSoldier->flags.fGettingHit && pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_STOP )
|
||||
{
|
||||
pSoldier->flags.fFlashPortrait = TRUE;
|
||||
pSoldier->bFlashPortraitFrame = FLASH_PORTRAIT_STARTSHADE;
|
||||
RESETTIMECOUNTER( pSoldier->timeCounters.PortraitFlashCounter, FLASH_PORTRAIT_DELAY );
|
||||
fRerender = TRUE;
|
||||
}
|
||||
|
||||
if ( pSoldier->flags.fGettingHit && pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_STOP )
|
||||
if ( pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_START )
|
||||
{
|
||||
// Loop through flash values
|
||||
if ( TIMECOUNTERDONE( pSoldier->timeCounters.PortraitFlashCounter, FLASH_PORTRAIT_DELAY ) )
|
||||
{
|
||||
pSoldier->flags.fFlashPortrait = TRUE;
|
||||
pSoldier->bFlashPortraitFrame = FLASH_PORTRAIT_STARTSHADE;
|
||||
RESETTIMECOUNTER( pSoldier->timeCounters.PortraitFlashCounter, FLASH_PORTRAIT_DELAY );
|
||||
fRerender = TRUE;
|
||||
}
|
||||
if ( pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_START )
|
||||
{
|
||||
// Loop through flash values
|
||||
if ( TIMECOUNTERDONE( pSoldier->timeCounters.PortraitFlashCounter, FLASH_PORTRAIT_DELAY ) )
|
||||
pSoldier->bFlashPortraitFrame++;
|
||||
|
||||
if ( pSoldier->bFlashPortraitFrame > FLASH_PORTRAIT_ENDSHADE )
|
||||
{
|
||||
RESETTIMECOUNTER( pSoldier->timeCounters.PortraitFlashCounter, FLASH_PORTRAIT_DELAY );
|
||||
pSoldier->bFlashPortraitFrame++;
|
||||
pSoldier->bFlashPortraitFrame = FLASH_PORTRAIT_ENDSHADE;
|
||||
|
||||
if ( pSoldier->bFlashPortraitFrame > FLASH_PORTRAIT_ENDSHADE )
|
||||
if ( pSoldier->flags.fGettingHit )
|
||||
{
|
||||
pSoldier->bFlashPortraitFrame = FLASH_PORTRAIT_ENDSHADE;
|
||||
|
||||
if ( pSoldier->flags.fGettingHit )
|
||||
{
|
||||
pSoldier->flags.fFlashPortrait = FLASH_PORTRAIT_WAITING;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Render face again!
|
||||
pSoldier->flags.fFlashPortrait = FLASH_PORTRAIT_STOP;
|
||||
}
|
||||
|
||||
fRerender = TRUE;
|
||||
pSoldier->flags.fFlashPortrait = FLASH_PORTRAIT_WAITING;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Render face again!
|
||||
pSoldier->flags.fFlashPortrait = FLASH_PORTRAIT_STOP;
|
||||
}
|
||||
|
||||
fRerender = TRUE;
|
||||
}
|
||||
}
|
||||
// CHECK IF WE WERE WAITING FOR GETTING HIT TO FINISH!
|
||||
if ( !pSoldier->flags.fGettingHit && pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_WAITING )
|
||||
{
|
||||
pSoldier->flags.fFlashPortrait = FALSE;
|
||||
fRerender = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK IF WE WERE WAITING FOR GETTING HIT TO FINISH!
|
||||
if ( !pSoldier->flags.fGettingHit && pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_WAITING )
|
||||
{
|
||||
pSoldier->flags.fFlashPortrait = FALSE;
|
||||
fRerender = TRUE;
|
||||
}
|
||||
|
||||
if ( pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_START )
|
||||
{
|
||||
fRerender = TRUE;
|
||||
}
|
||||
if ( pSoldier->flags.fFlashPortrait == FLASH_PORTRAIT_START )
|
||||
{
|
||||
fRerender = TRUE;
|
||||
}
|
||||
|
||||
if( pFace->uiFlags & FACE_REDRAW_WHOLE_FACE_NEXT_FRAME )
|
||||
{
|
||||
@@ -2939,20 +2950,24 @@ void HandleAutoFaces( )
|
||||
fRerender = TRUE;
|
||||
}
|
||||
|
||||
if ( fInterfacePanelDirty == DIRTYLEVEL2 && guiCurrentScreen == GAME_SCREEN )
|
||||
{
|
||||
if ( fInterfacePanelDirty == DIRTYLEVEL2 && guiCurrentScreen == GAME_SCREEN )
|
||||
{
|
||||
fRerender = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if ( fRerender )
|
||||
{
|
||||
RenderAutoFace( uiCount );
|
||||
RenderAutoFace( uiCount );
|
||||
}
|
||||
|
||||
if ( bLife < CONSCIOUSNESS )
|
||||
{
|
||||
fHandleFace = FALSE;
|
||||
}
|
||||
|
||||
// Flugente: frozen soldiers can't be selected
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
fHandleFace = FALSE;
|
||||
}
|
||||
|
||||
if ( fHandleFace )
|
||||
@@ -2961,11 +2976,8 @@ void HandleAutoFaces( )
|
||||
}
|
||||
|
||||
MouthAutoFace( uiCount );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void HandleTalkingAutoFaces( )
|
||||
|
||||
@@ -6225,6 +6225,13 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag )
|
||||
return;
|
||||
}
|
||||
|
||||
// Flugente: frozen soldiers can't be selected
|
||||
if ( MercPtrs[ubID]->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
{
|
||||
LocateSoldier( ubID, SETLOCATOR );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( _KeyDown( ALT ) )
|
||||
{
|
||||
if ( gGameSettings.fOptions[ TOPTION_OLD_SELECTION_METHOD ] )
|
||||
|
||||
@@ -140,6 +140,7 @@ CHAR8 zCorpseFilenames[ NUM_CORPSES ][70] =
|
||||
"ANIMS\\CORPSES\\J_DEAD.STI",
|
||||
"ANIMS\\CORPSES\\S_BURNT.STI",
|
||||
"ANIMS\\CORPSES\\S_EXPLD.STI",
|
||||
"ANIMS\\CORPSES\\CRYO_CORPSE.STI",
|
||||
};
|
||||
|
||||
|
||||
@@ -205,6 +206,7 @@ CHAR8 zNoBloodCorpseFilenames[ NUM_CORPSES ][70] =
|
||||
"ANIMS\\CORPSES\\J_DEAD.STI",
|
||||
"ANIMS\\CORPSES\\S_BURNT.STI",
|
||||
"ANIMS\\CORPSES\\S_EXPLD.STI",
|
||||
"ANIMS\\CORPSES\\CRYO_CORPSE.STI",
|
||||
};
|
||||
|
||||
UINT8 gb4DirectionsFrom8[8] =
|
||||
@@ -413,6 +415,7 @@ UINT16 GetCorpseStructIndex( ROTTING_CORPSE_DEFINITION *pCorpseDef, BOOLEAN fFor
|
||||
case QUEEN_MONSTER_DEAD:
|
||||
case BURNT_DEAD:
|
||||
case EXPLODE_DEAD:
|
||||
case CRYO_CORPSE:
|
||||
|
||||
bDirection = 0;
|
||||
break;
|
||||
@@ -926,7 +929,7 @@ BOOLEAN TurnSoldierIntoCorpse( SOLDIERTYPE *pSoldier, BOOLEAN fRemoveMerc, BOOLE
|
||||
}
|
||||
}
|
||||
|
||||
if ( ubType == QUEEN_MONSTER_DEAD || ubType == BURNT_DEAD || ubType == EXPLODE_DEAD )
|
||||
if ( ubType == QUEEN_MONSTER_DEAD || ubType == BURNT_DEAD || ubType == EXPLODE_DEAD || ubType == CRYO_CORPSE )
|
||||
{
|
||||
Corpse.ubDirection = NORTHWEST;
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ enum RottingCorpseDefines
|
||||
ROBOT_DEAD,
|
||||
BURNT_DEAD,
|
||||
EXPLODE_DEAD,
|
||||
CRYO_CORPSE,
|
||||
|
||||
NUM_CORPSES,
|
||||
|
||||
|
||||
@@ -203,7 +203,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Check for special code
|
||||
if ( sNewAniFrame < 399 )
|
||||
{
|
||||
@@ -2158,7 +2158,14 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
}
|
||||
|
||||
if ( gGameSettings.fOptions[ TOPTION_BLOOD_N_GORE ] )
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] && pSoldier->usAnimState != CRYO_DEATH && pSoldier->usAnimState != CRYO_DEATH_CROUCHED )
|
||||
{
|
||||
if ( gAnimControl[pSoldier->usAnimState].ubEndHeight == ANIM_STAND )
|
||||
pSoldier->ChangeSoldierState( CRYO_DEATH, 0, TRUE );
|
||||
else
|
||||
pSoldier->ChangeSoldierState( CRYO_DEATH_CROUCHED, 0, TRUE );
|
||||
}
|
||||
else if ( gGameSettings.fOptions[ TOPTION_BLOOD_N_GORE ] )
|
||||
{
|
||||
// If we are dead, play some death animations!!
|
||||
switch( pSoldier->usAnimState )
|
||||
@@ -2236,8 +2243,8 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier )
|
||||
// ATE: Needs to be FALSE!
|
||||
return( FALSE );
|
||||
}
|
||||
return( TRUE );
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -4128,6 +4128,14 @@ BOOLEAN SOLDIERTYPE::EVENT_InitNewSoldierAnim( UINT16 usNewState, UINT16 usStart
|
||||
// Merc on fire!
|
||||
this->aiData.uiPendingActionData1 = PlaySoldierJA2Sample( this->ubID, (FIRE_ON_MERC), RATE_11025, SoundVolume( HIGHVOLUME, this->sGridNo ), 5, SoundDir( this->sGridNo ), TRUE );
|
||||
break;
|
||||
|
||||
case CRYO_DEATH:
|
||||
PlayJA2StreamingSampleFromFile( "stsounds\\CryoBlast_1.ogg", RATE_11025, SoundVolume( HIGHVOLUME, this->sGridNo ), 1, MIDDLEPAN, NULL );
|
||||
break;
|
||||
|
||||
case CRYO_DEATH_CROUCHED:
|
||||
PlayJA2StreamingSampleFromFile( "stsounds\\CryoBlast_2.ogg", RATE_11025, SoundVolume( HIGHVOLUME, this->sGridNo ), 1, MIDDLEPAN, NULL );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6306,6 +6314,16 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1
|
||||
return;
|
||||
}
|
||||
|
||||
// Flugente: cryo death
|
||||
if (this->stats.bLife <= 0 && this->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
{
|
||||
if ( gAnimControl[this->usAnimState].ubEndHeight == ANIM_STAND )
|
||||
this->EVENT_InitNewSoldierAnim( CRYO_DEATH, 0, TRUE );
|
||||
else
|
||||
this->EVENT_InitNewSoldierAnim( CRYO_DEATH_CROUCHED, 0, TRUE );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// SWITCH IN TYPE OF WEAPON
|
||||
if ( Item[usWeaponIndex].usItemClass & (IC_GUN | IC_THROWING_KNIFE) )
|
||||
@@ -6536,7 +6554,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD
|
||||
// ReleaseSoldiersAttacker( pSoldier );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ( fFallenOver )
|
||||
{
|
||||
// HEADROCK HAM 3.2: Critical legshots cost an extra number of APs, based on shot damage.
|
||||
@@ -7225,9 +7243,7 @@ void SOLDIERTYPE::SoldierGotoStationaryStance( void )
|
||||
|
||||
|
||||
void SOLDIERTYPE::ChangeSoldierStance( UINT8 ubDesiredStance )
|
||||
{
|
||||
UINT16 usNewState;
|
||||
|
||||
{
|
||||
// Check if they are the same!
|
||||
if ( ubDesiredStance == gAnimControl[this->usAnimState].ubEndHeight )
|
||||
{
|
||||
@@ -7263,7 +7279,7 @@ void SOLDIERTYPE::ChangeSoldierStance( UINT8 ubDesiredStance )
|
||||
}
|
||||
else
|
||||
{
|
||||
usNewState = this->GetNewSoldierStateFromNewStance( ubDesiredStance );
|
||||
UINT16 usNewState = this->GetNewSoldierStateFromNewStance( ubDesiredStance );
|
||||
|
||||
// Set desired stance
|
||||
this->ubDesiredHeight = ubDesiredStance;
|
||||
@@ -9796,7 +9812,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// Deduct life!, Show damage if we want!
|
||||
bOldLife = this->stats.bLife;
|
||||
|
||||
@@ -10798,6 +10814,9 @@ BOOLEAN SOLDIERTYPE::InternalDoMercBattleSound( UINT8 ubBattleSoundID, INT8 bSpe
|
||||
|
||||
BOOLEAN SOLDIERTYPE::DoMercBattleSound( UINT8 ubBattleSoundID )
|
||||
{
|
||||
if ( this->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
return FALSE;
|
||||
|
||||
// We WANT to play some RIGHT AWAY.....
|
||||
if ( gBattleSndsData[ubBattleSoundID].fStopDialogue == 1 || (this->ubProfile == NO_PROFILE) || InOverheadMap( ) )
|
||||
{
|
||||
@@ -14515,8 +14534,12 @@ INT32 SOLDIERTYPE::GetDamageResistance( BOOLEAN fAutoResolve, BOOLEAN fCalcBreat
|
||||
|
||||
resistance += this->GetBackgroundValue( BG_RESI_PHYSICAL );
|
||||
|
||||
// frozen targets go down HARD
|
||||
if ( this->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
resistance -= 1000;
|
||||
|
||||
// resistance is between -100% and 95%
|
||||
resistance = max( -100, resistance );
|
||||
resistance = max( -1000, resistance );
|
||||
resistance = min( 95, resistance );
|
||||
|
||||
return(resistance);
|
||||
@@ -15421,7 +15444,7 @@ BOOLEAN SOLDIERTYPE::SeemsLegit( UINT8 ubObserverID )
|
||||
// if we perform suspicious actions, we are easier to uncover for a short time (but not by ourselves if we test the disguise)
|
||||
if ( ubObserverID != this->ubID && this->usSoldierFlagMask & SOLDIER_COVERT_TEMPORARY_OVERT )
|
||||
{
|
||||
// if enough time ha passed, or we have spend enough AP, lose the flag
|
||||
// if enough time has passed, or we have spend enough AP, lose the flag
|
||||
if ( this->usSkillCooldown[SOLDIER_COOLDOWN_COVERTOPS_TEMPORARYOVERT_APS] == 0 || GetWorldTotalSeconds( ) >= this->usSkillCooldown[SOLDIER_COOLDOWN_COVERTOPS_TEMPORARYOVERT_SECONDS] )
|
||||
{
|
||||
this->usSkillCooldown[SOLDIER_COOLDOWN_COVERTOPS_TEMPORARYOVERT_SECONDS] = 0;
|
||||
@@ -17118,7 +17141,7 @@ void SOLDIERTYPE::SoldierPropertyUpkeep( )
|
||||
{
|
||||
// these effects last only one turn
|
||||
this->usSoldierFlagMask &= ~(SOLDIER_AIRDROP_TURN | SOLDIER_ASSAULT_BONUS | SOLDIER_RAISED_REDALERT);
|
||||
|
||||
|
||||
if ( HasBackgroundFlag( BACKGROUND_EXP_UNDERGROUND ) && this->bSectorZ )
|
||||
++bExtraExpLevel;
|
||||
|
||||
@@ -17141,6 +17164,9 @@ void SOLDIERTYPE::SoldierPropertyUpkeep( )
|
||||
usSkillCounter[counter] = max( 0, usSkillCounter[counter] - 1 );
|
||||
}
|
||||
|
||||
if ( this->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
this->usSkillCooldown[SOLDIER_COOLDOWN_CRYO]--;
|
||||
|
||||
// if soldier was seen this turn, increase his observed counter
|
||||
if ( this->usSoldierFlagMask & SOLDIER_ENEMY_OBSERVEDTHISTURN )
|
||||
{
|
||||
|
||||
@@ -600,6 +600,7 @@ enum {
|
||||
enum {
|
||||
SOLDIER_COOLDOWN_COVERTOPS_TEMPORARYOVERT_SECONDS = 0,
|
||||
SOLDIER_COOLDOWN_COVERTOPS_TEMPORARYOVERT_APS,
|
||||
SOLDIER_COOLDOWN_CRYO, // counts how many turns character will be frozen
|
||||
|
||||
SOLDIER_COOLDOWN_MAX = 20, // enough space for fillers
|
||||
};
|
||||
|
||||
+33
-30
@@ -124,50 +124,50 @@ UINT32 GetSoldierFindFlags( UINT16 ubID )
|
||||
UINT32 MercFlags = 0;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
// Get pSoldier!
|
||||
pSoldier = MercPtrs[ ubID ];
|
||||
// Get pSoldier!
|
||||
pSoldier = MercPtrs[ ubID ];
|
||||
|
||||
// FInd out and set flags
|
||||
if ( ubID == gusSelectedSoldier )
|
||||
{
|
||||
// FInd out and set flags
|
||||
if ( ubID == gusSelectedSoldier )
|
||||
{
|
||||
MercFlags |= SELECTED_MERC;
|
||||
}
|
||||
if ( ubID >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID && ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID )
|
||||
{
|
||||
if ( ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !GetNumberInVehicle( pSoldier->bVehicleID ) )
|
||||
{
|
||||
// Don't do anything!
|
||||
}
|
||||
else
|
||||
if ( ubID >= gTacticalStatus.Team[ gbPlayerNum ].bFirstID && ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID )
|
||||
{
|
||||
// It's our own merc
|
||||
MercFlags |= OWNED_MERC;
|
||||
|
||||
if ( pSoldier->bAssignment < ON_DUTY )
|
||||
if ( ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !GetNumberInVehicle( pSoldier->bVehicleID ) )
|
||||
{
|
||||
MercFlags |= ONDUTY_MERC;
|
||||
// Don't do anything!
|
||||
}
|
||||
else
|
||||
{
|
||||
// It's our own merc
|
||||
MercFlags |= OWNED_MERC;
|
||||
|
||||
if ( pSoldier->bAssignment < ON_DUTY )
|
||||
{
|
||||
MercFlags |= ONDUTY_MERC;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check the side, etc
|
||||
if ( !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum ) )
|
||||
{
|
||||
// It's an enemy merc
|
||||
MercFlags |= ENEMY_MERC;
|
||||
}
|
||||
else
|
||||
{
|
||||
// It's not an enemy merc
|
||||
MercFlags |= NEUTRAL_MERC;
|
||||
// Check the side, etc
|
||||
if ( !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum ) )
|
||||
{
|
||||
// It's an enemy merc
|
||||
MercFlags |= ENEMY_MERC;
|
||||
}
|
||||
else
|
||||
{
|
||||
// It's not an enemy merc
|
||||
MercFlags |= NEUTRAL_MERC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check for a guy who does not have an iterrupt ( when applicable! )
|
||||
if ( !OK_INTERRUPT_MERC( pSoldier ) )
|
||||
{
|
||||
MercFlags |= NOINTERRUPT_MERC;
|
||||
MercFlags |= NOINTERRUPT_MERC;
|
||||
}
|
||||
|
||||
if ( pSoldier->stats.bLife < OKLIFE )
|
||||
@@ -175,6 +175,9 @@ UINT32 GetSoldierFindFlags( UINT16 ubID )
|
||||
MercFlags |= UNCONSCIOUS_MERC;
|
||||
}
|
||||
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
MercFlags |= UNCONSCIOUS_MERC;
|
||||
|
||||
if ( pSoldier->stats.bLife == 0 )
|
||||
{
|
||||
MercFlags |= DEAD_MERC;
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
#define OK_ENEMY_MERC( p ) ( !p->aiData.bNeutral && (p->bSide != gbPlayerNum ) && p->stats.bLife >= OKLIFE && (p->bTeam < 5 ))
|
||||
|
||||
// Checks if our guy can be controllable .... checks bInSector, team, on duty, etc...
|
||||
//#define OK_CONTROLLABLE_MERC( p ) ( p->stats.bLife >= OKLIFE && p->bActive && p->bInSector && p->bTeam == gbPlayerNum && p->bAssignment < ON_DUTY )
|
||||
#define OK_CONTROLLABLE_MERC( p ) ( p->stats.bLife >= OKLIFE && p->bActive && p->bInSector && p->bTeam == gbPlayerNum && ( p->bAssignment < ON_DUTY || p->bAssignment == VEHICLE ) )
|
||||
|
||||
// Checks if our guy is controllable but doesn't care about current assignment
|
||||
#define OK_CONTROL_MERC( p ) ( p->stats.bLife >= OKLIFE && p->bActive && p->bInSector && p->bTeam == gbPlayerNum && !(p->usSkillCooldown[SOLDIER_COOLDOWN_CRYO]) )
|
||||
|
||||
#define OK_CONTROLLABLE_MERC( p ) ( OK_CONTROL_MERC(p) && ( p->bAssignment < ON_DUTY || p->bAssignment == VEHICLE ) )
|
||||
|
||||
// Checks if our guy can be controllable .... checks bInSector, team, on duty, etc...
|
||||
#define OK_INSECTOR_MERC( p ) ( p->stats.bLife >= OKLIFE && p->bActive && p->bInSector && p->bTeam == gbPlayerNum && p->bAssignment < ON_DUTY )
|
||||
|
||||
// Checks if our guy is controllable but doesn't care about current assignment
|
||||
#define OK_CONTROL_MERC( p ) ( p->stats.bLife >= OKLIFE && p->bActive && p->bInSector && p->bTeam == gbPlayerNum )
|
||||
#define OK_INSECTOR_MERC( p ) ( p->stats.bLife >= OKLIFE && p->bActive && p->bInSector && p->bTeam == gbPlayerNum && p->bAssignment < ON_DUTY )
|
||||
|
||||
// Checkf if our guy can be selected and is not in a position where our team has an interupt and he does not have one...
|
||||
#define OK_INTERRUPT_MERC( p ) ( ( INTERRUPT_QUEUED != 0 ) ? ( ( p->aiData.bMoved ) ? FALSE : TRUE ) : TRUE )
|
||||
|
||||
@@ -9653,6 +9653,14 @@ INT32 BulletImpact( SOLDIERTYPE *pFirer, BULLET *pBullet, SOLDIERTYPE * pTarget,
|
||||
gfNextShotKills = FALSE;
|
||||
}
|
||||
|
||||
// Flugente: if this is cryo ammo, freeze target.
|
||||
if ( !TANK( pTarget ) && AmmoTypes[ubAmmoType].ammoflag & AMMO_CRYO )
|
||||
{
|
||||
pTarget->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] += 2;
|
||||
|
||||
ShutupaYoFace( pTarget->iFaceIndex );
|
||||
}
|
||||
|
||||
if ( iImpact > 0 && !TANK( pTarget ) )
|
||||
{
|
||||
// Flugente: any bullet can have drug effects it set so in the magazine item
|
||||
|
||||
+1
-1
@@ -177,7 +177,7 @@ enum
|
||||
|
||||
// -------- added by Flugente: various ammo flags --------
|
||||
// flags used for various ammo properties (easier than adding 32 differently named variables). DO NOT CHANGE THEM, UNLESS YOU KNOW WHAT YOU ARE DOING!!!
|
||||
//#define AMMO_NEUROTOXIN 0x00000001 //1 // this ammo adds the cyanide drug effect to its target, killing it in a few turns // not used anymore
|
||||
#define AMMO_CRYO 0x00000001 //1 // this ammo shock-freezes target
|
||||
#define AMMO_BLIND 0x00000002 //2 // this ammo will blind if it hits the head
|
||||
#define AMMO_ANTIMATERIEL 0x00000004 //4 // this ammo is anti-materiel, bullets can destroy structures
|
||||
/*#define CONCERTINA 0x00000008 //8
|
||||
|
||||
@@ -1317,13 +1317,12 @@ void TurnBasedHandleNPCAI(SOLDIERTYPE *pSoldier)
|
||||
// pSoldier->flags.fNoAPToFinishMove = FALSE;
|
||||
|
||||
// Flugente: pows don't do anything
|
||||
if ( pSoldier->usSoldierFlagMask & SOLDIER_POW )
|
||||
if ( pSoldier->usSoldierFlagMask & SOLDIER_POW || pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
{
|
||||
EndAIGuysTurn( pSoldier);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ((pSoldier->aiData.bAction != AI_ACTION_NONE) && pSoldier->aiData.bActionInProgress)
|
||||
{
|
||||
// if action should remain in progress
|
||||
|
||||
@@ -73,7 +73,7 @@ void RTHandleAI( SOLDIERTYPE * pSoldier )
|
||||
}
|
||||
|
||||
// Flugente: prisoners of war don't do anything
|
||||
if ( pSoldier->usSoldierFlagMask & SOLDIER_POW )
|
||||
if ( pSoldier->usSoldierFlagMask & SOLDIER_POW || pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
return;
|
||||
|
||||
// if man has nothing to do
|
||||
|
||||
@@ -1641,31 +1641,14 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo
|
||||
sNewWoundAmt = (INT16)(sNewWoundAmt * (100 - (gSkillTraitValues.bTanksDamageResistanceModifier / 2)) / 100);
|
||||
}
|
||||
|
||||
// Bodybuilding damage resistance
|
||||
if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, BODYBUILDING_NT ) )
|
||||
sNewWoundAmt = max( 1, (INT16)(sNewWoundAmt * (100 - gSkillTraitValues.ubBBDamageResistance) / 100));
|
||||
|
||||
// Flugente: moved the damage calculation into a separate function
|
||||
#ifdef ENABLE_ZOMBIES
|
||||
if ( pSoldier->GetDamageResistance(FALSE, FALSE) > 0 )
|
||||
sNewWoundAmt -= ((sNewWoundAmt * pSoldier->GetDamageResistance(FALSE, FALSE)) /100);
|
||||
#else
|
||||
// Damage resistance for Militia
|
||||
if (pSoldier->ubSoldierClass == SOLDIER_CLASS_GREEN_MILITIA && gGameExternalOptions.bGreenMilitiaDamageResistance != 0)
|
||||
sNewWoundAmt -= ((sNewWoundAmt * gGameExternalOptions.bGreenMilitiaDamageResistance) /100);
|
||||
else if (pSoldier->ubSoldierClass == SOLDIER_CLASS_REG_MILITIA && gGameExternalOptions.bRegularMilitiaDamageResistance != 0)
|
||||
sNewWoundAmt -= ((sNewWoundAmt * gGameExternalOptions.bRegularMilitiaDamageResistance) /100);
|
||||
else if (pSoldier->ubSoldierClass == SOLDIER_CLASS_ELITE_MILITIA && gGameExternalOptions.bVeteranMilitiaDamageResistance != 0)
|
||||
sNewWoundAmt -= ((sNewWoundAmt * gGameExternalOptions.bVeteranMilitiaDamageResistance) /100);
|
||||
// bonus for enemy too
|
||||
else if (pSoldier->ubSoldierClass == SOLDIER_CLASS_ADMINISTRATOR && gGameExternalOptions.sEnemyAdminDamageResistance != 0)
|
||||
sNewWoundAmt -= ((sNewWoundAmt * gGameExternalOptions.sEnemyAdminDamageResistance) /100);
|
||||
else if (pSoldier->ubSoldierClass == SOLDIER_CLASS_ARMY && gGameExternalOptions.sEnemyRegularDamageResistance != 0)
|
||||
sNewWoundAmt -= ((sNewWoundAmt * gGameExternalOptions.sEnemyRegularDamageResistance) /100);
|
||||
else if (pSoldier->ubSoldierClass == SOLDIER_CLASS_ELITE && gGameExternalOptions.sEnemyEliteDamageResistance != 0)
|
||||
sNewWoundAmt -= ((sNewWoundAmt * gGameExternalOptions.sEnemyEliteDamageResistance) /100);
|
||||
#endif
|
||||
INT32 sDamageResistance = pSoldier->GetDamageResistance( FALSE, FALSE );
|
||||
|
||||
sNewWoundAmt = max( 0, (INT16)(sNewWoundAmt * (100 - sDamageResistance) / 100) );
|
||||
|
||||
// Flugente: this seems a bit weird, but is consistent with the previous code - we do not receive stat damage if we have positive damage resistance
|
||||
if ( sDamageResistance > 0 )
|
||||
;
|
||||
// we can loose stats due to being hit by the blast
|
||||
else if ( gGameOptions.fNewTraitSystem && Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL &&
|
||||
!AM_A_ROBOT( pSoldier ) && !(pSoldier->flags.uiStatusFlags & SOLDIER_MONSTER) && !TANK(pSoldier) &&
|
||||
@@ -2159,6 +2142,19 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
|
||||
|
||||
//ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"ExpControl pSoldier->flags.fHitByGasFlags: %d", pSoldier->flags.fHitByGasFlags );
|
||||
|
||||
// Flugente: if we're frozen, we take no gas damage at all (because I say so)
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
{
|
||||
sWoundAmt = 0;
|
||||
sBreathAmt = 0;
|
||||
|
||||
// fire makes us thaw faster
|
||||
if ( pExplosive->ubType == EXPLOSV_BURNABLEGAS )
|
||||
{
|
||||
pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO]--;
|
||||
}
|
||||
}
|
||||
|
||||
// a gas effect, take damage directly...
|
||||
pSoldier->SoldierTakeDamage( ANIM_STAND, sWoundAmt, sBreathAmt, TAKE_DAMAGE_GAS, NOBODY, NOWHERE, 0, TRUE );
|
||||
|
||||
|
||||
+28
-18
@@ -1596,15 +1596,15 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_MULTITILE_Z )
|
||||
{
|
||||
fMultiTransShadowZBlitter = TRUE;
|
||||
// ATE: Use one direction for queen!
|
||||
if ( pSoldier->ubBodyType == QUEENMONSTER )
|
||||
{
|
||||
sMultiTransShadowZBlitterIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sMultiTransShadowZBlitterIndex = gOneCDirection[ pSoldier->ubDirection ];
|
||||
}
|
||||
// ATE: Use one direction for queen!
|
||||
if ( pSoldier->ubBodyType == QUEENMONSTER )
|
||||
{
|
||||
sMultiTransShadowZBlitterIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sMultiTransShadowZBlitterIndex = gOneCDirection[ pSoldier->ubDirection ];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1647,7 +1647,7 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
||||
ubShadeLevel = (pNode->ubShadeLevel&0x0f);
|
||||
ubShadeLevel=__max(ubShadeLevel-2, DEFAULT_SHADE_LEVEL);
|
||||
ubShadeLevel|=(pNode->ubShadeLevel&0x30);
|
||||
|
||||
|
||||
if ( pSoldier->flags.fBeginFade )
|
||||
{
|
||||
pShadeTable = pSoldier->pCurrentShade = pSoldier->pShades[ pSoldier->ubFadeLevel ];
|
||||
@@ -1708,17 +1708,17 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
||||
{
|
||||
if ( pSelSoldier->aiData.bOppList[ pSoldier->ubID ] != SEEN_CURRENTLY )
|
||||
{
|
||||
if ( pSoldier->usAnimState != CHARIOTS_OF_FIRE && pSoldier->usAnimState != BODYEXPLODING )
|
||||
{
|
||||
bGlowShadeOffset = 10;
|
||||
}
|
||||
if ( pSoldier->usAnimState != CHARIOTS_OF_FIRE && pSoldier->usAnimState != BODYEXPLODING )
|
||||
{
|
||||
bGlowShadeOffset = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( pSoldier->pathing.bLevel == 0 )
|
||||
{
|
||||
pShadeStart = (INT16 **) &( pSoldier->pGlowShades[ 0 ] );
|
||||
pShadeStart = (INT16 **)&(pSoldier->pGlowShades[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1804,6 +1804,12 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
||||
pShadeTable = pSoldier->pEffectShades[ 1 ];
|
||||
}
|
||||
|
||||
// Flugente: frozen soldiers appear to be in ice, which we simulate by having the soldier be fully white
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
|
||||
{
|
||||
pShadeTable = White16BPPPalette;
|
||||
}
|
||||
|
||||
hVObject=gAnimSurfaceDatabase[ usAnimSurface ].hVideoObject;
|
||||
|
||||
if ( hVObject == NULL )
|
||||
@@ -1822,13 +1828,17 @@ void RenderTiles(UINT32 uiFlags, INT32 iStartPointX_M, INT32 iStartPointY_M, INT
|
||||
// ATE: Artificially increase z=level...
|
||||
sZLevel += 2;
|
||||
}
|
||||
|
||||
usImageIndex = pSoldier->usAniFrame;
|
||||
|
||||
|
||||
usImageIndex=pSoldier->usAniFrame;
|
||||
// Flugente: frozen soldiers don't move
|
||||
if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] && pSoldier->stats.bLife > 0 )
|
||||
{
|
||||
usImageIndex = 0;
|
||||
}
|
||||
|
||||
uiDirtyFlags=BGND_FLAG_SINGLE|BGND_FLAG_ANIMATED| BGND_FLAG_MERC;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// Adjust for interface level
|
||||
|
||||
Reference in New Issue
Block a user