Zombie Update (by Flugente)

- new variables for additional strength, dexterity, agility, wisdom and experience level due to drugs, traits etc.
- new flagmask for soldiers (so no new variables have to be added in the future)
- fix: stat-altering drugs work again and can now have a higher magnitude
- drug-altered stats now show up purple
- fix: option screen help texts were missing

WARING! This will break savegame compatibility

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5325 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2012-06-02 15:50:54 +00:00
parent defef00330
commit 4750b07f16
38 changed files with 339 additions and 326 deletions
+1
View File
@@ -1348,6 +1348,7 @@ void LoadGameExternalOptions()
gGameExternalOptions.sEnemyZombieDamageResistance = iniReader.ReadInteger("Tactical Zombie Settings", "ZOMBIE_DAMAGE_RESISTANCE", 0, -50, 95); gGameExternalOptions.sEnemyZombieDamageResistance = iniReader.ReadInteger("Tactical Zombie Settings", "ZOMBIE_DAMAGE_RESISTANCE", 0, -50, 95);
gGameExternalOptions.fZombieOnlyHeadshotsWork = iniReader.ReadBoolean("Tactical Zombie Settings", "ZOMBIE_ONLY_HEADSHOTS_WORK", FALSE); gGameExternalOptions.fZombieOnlyHeadshotsWork = iniReader.ReadBoolean("Tactical Zombie Settings", "ZOMBIE_ONLY_HEADSHOTS_WORK", FALSE);
gGameExternalOptions.sZombieDifficultyLevel = iniReader.ReadInteger("Tactical Zombie Settings", "ZOMBIE_DIFFICULTY_LEVEL", 2, 1, 4); gGameExternalOptions.sZombieDifficultyLevel = iniReader.ReadInteger("Tactical Zombie Settings", "ZOMBIE_DIFFICULTY_LEVEL", 2, 1, 4);
gGameExternalOptions.fZombieRiseWithArmour = iniReader.ReadBoolean("Tactical Zombie Settings", "ZOMBIE_RISE_WITH_ARMOUR", TRUE);
//################# Tactical Poison Settings ################## //################# Tactical Poison Settings ##################
gGameExternalOptions.ubPoisonBaseMedicalSkillToCure = iniReader.ReadInteger("Tactical Poison Settings", "POISON_BASE_MEDICAL_SKILL_TO_CURE", 50, 1, 100); gGameExternalOptions.ubPoisonBaseMedicalSkillToCure = iniReader.ReadInteger("Tactical Poison Settings", "POISON_BASE_MEDICAL_SKILL_TO_CURE", 50, 1, 100);
+1
View File
@@ -374,6 +374,7 @@ typedef struct
INT8 sEnemyZombieDamageResistance; INT8 sEnemyZombieDamageResistance;
BOOLEAN fZombieOnlyHeadshotsWork; BOOLEAN fZombieOnlyHeadshotsWork;
INT8 sZombieDifficultyLevel; INT8 sZombieDifficultyLevel;
BOOLEAN fZombieRiseWithArmour;
// Flugente: poison settings // Flugente: poison settings
INT32 ubPoisonBaseMedicalSkillToCure; INT32 ubPoisonBaseMedicalSkillToCure;
+7
View File
@@ -1978,6 +1978,13 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile)
numBytesRead = ReadFieldByField(hFile, &this->bPoisonResistance, sizeof(bPoisonResistance), sizeof(INT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bPoisonResistance, sizeof(bPoisonResistance), sizeof(INT16), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->bPoisonAbsorption, sizeof(bPoisonAbsorption), sizeof(INT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bPoisonAbsorption, sizeof(bPoisonAbsorption), sizeof(INT16), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->bExtraStrength, sizeof(bExtraStrength), sizeof(INT16), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->bExtraDexterity, sizeof(bExtraDexterity), sizeof(INT16), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->bExtraAgility, sizeof(bExtraAgility), sizeof(INT16), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->bExtraWisdom, sizeof(bExtraWisdom), sizeof(INT16), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->bExtraExpLevel, sizeof(bExtraExpLevel), sizeof(INT8), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->bSoldierFlagMask, sizeof(bSoldierFlagMask), sizeof(INT32), numBytesRead);
#ifdef JA2UB #ifdef JA2UB
numBytesRead = ReadFieldByField(hFile, &this->fIgnoreGetupFromCollapseCheck, sizeof(fIgnoreGetupFromCollapseCheck), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->fIgnoreGetupFromCollapseCheck, sizeof(fIgnoreGetupFromCollapseCheck), sizeof(BOOLEAN), numBytesRead);
numBytesRead = ReadFieldByField(hFile, &this->GetupFromJA25StartCounter, sizeof(GetupFromJA25StartCounter), sizeof(TIMECOUNTER), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->GetupFromJA25StartCounter, sizeof(GetupFromJA25StartCounter), sizeof(TIMECOUNTER), numBytesRead);
+21 -21
View File
@@ -2386,8 +2386,8 @@ SOLDIERTYPE *AnyDoctorWhoCanHealThisPatient( SOLDIERTYPE *pPatient, BOOLEAN fThi
UINT16 CalculateHealingPointsForDoctor(SOLDIERTYPE *pDoctor, UINT16 *pusMaxPts, BOOLEAN fMakeSureKitIsInHand ) UINT16 CalculateHealingPointsForDoctor(SOLDIERTYPE *pDoctor, UINT16 *pusMaxPts, BOOLEAN fMakeSureKitIsInHand )
{ {
UINT16 usHealPts = 0; UINT32 usHealPts = 0;
UINT16 usKitPts = 0; UINT32 usKitPts = 0;
INT8 bMedFactor; INT8 bMedFactor;
INT16 sSectorModifier = 100; INT16 sSectorModifier = 100;
@@ -2413,7 +2413,7 @@ UINT16 CalculateHealingPointsForDoctor(SOLDIERTYPE *pDoctor, UINT16 *pusMaxPts,
} }
// calculate effective doctoring rate (adjusted for drugs, alcohol, etc.) // calculate effective doctoring rate (adjusted for drugs, alcohol, etc.)
usHealPts = (UINT16) (( EffectiveMedical( pDoctor ) * (( EffectiveDexterity( pDoctor ) + EffectiveWisdom( pDoctor ) ) / 2) * (100 + ( 5 * EffectiveExpLevel( pDoctor) ) ) ) / gGameExternalOptions.ubDoctoringRateDivisor); usHealPts = (UINT32) (( EffectiveMedical( pDoctor ) * (( EffectiveDexterity( pDoctor, FALSE ) + EffectiveWisdom( pDoctor ) ) / 2) * (100 + ( 5 * EffectiveExpLevel( pDoctor) ) ) ) / gGameExternalOptions.ubDoctoringRateDivisor);
usHealPts = __max(0, (usHealPts * sSectorModifier)/100); usHealPts = __max(0, (usHealPts * sSectorModifier)/100);
// calculate normal doctoring rate - what it would be if his stats were "normal" (ignoring drugs, fatigue, equipment condition) // calculate normal doctoring rate - what it would be if his stats were "normal" (ignoring drugs, fatigue, equipment condition)
@@ -2483,7 +2483,7 @@ UINT16 CalculateHealingPointsForDoctor(SOLDIERTYPE *pDoctor, UINT16 *pusMaxPts,
UINT8 CalculateRepairPointsForRepairman(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts, BOOLEAN fMakeSureKitIsInHand ) UINT8 CalculateRepairPointsForRepairman(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts, BOOLEAN fMakeSureKitIsInHand )
{ {
UINT16 usRepairPts; UINT32 usRepairPts;
UINT16 usKitPts; UINT16 usKitPts;
UINT8 ubKitEffectiveness; UINT8 ubKitEffectiveness;
// HEADROCK HAM 3.5: Modifier from local facilities // HEADROCK HAM 3.5: Modifier from local facilities
@@ -2503,7 +2503,7 @@ UINT8 CalculateRepairPointsForRepairman(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts
} }
// calculate effective repair rate (adjusted for drugs, alcohol, etc.) // calculate effective repair rate (adjusted for drugs, alcohol, etc.)
usRepairPts = (UINT16) ((EffectiveMechanical( pSoldier ) * EffectiveDexterity( pSoldier ) * (100 + ( 5 * EffectiveExpLevel( pSoldier) ) ) ) / ( gGameExternalOptions.ubRepairRateDivisor * gGameExternalOptions.ubAssignmentUnitsPerDay )); usRepairPts = (UINT16) ((EffectiveMechanical( pSoldier ) * EffectiveDexterity( pSoldier, FALSE ) * (100 + ( 5 * EffectiveExpLevel( pSoldier) ) ) ) / ( gGameExternalOptions.ubRepairRateDivisor * gGameExternalOptions.ubAssignmentUnitsPerDay ));
// calculate normal repair rate - what it would be if his stats were "normal" (ignoring drugs, fatigue, equipment condition) // calculate normal repair rate - what it would be if his stats were "normal" (ignoring drugs, fatigue, equipment condition)
// and equipment was not a hindrance // and equipment was not a hindrance
@@ -4673,11 +4673,11 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE
{ {
// return the bonus training pts of this instructor with this student,...if student null, simply assignment student skill of 0 and student wisdom of 100 // return the bonus training pts of this instructor with this student,...if student null, simply assignment student skill of 0 and student wisdom of 100
INT16 sTrainingPts = 0; INT16 sTrainingPts = 0;
INT8 bTraineeEffWisdom = 0; INT16 bTraineeEffWisdom = 0;
INT8 bTraineeNatWisdom = 0; INT16 bTraineeNatWisdom = 0;
INT8 bTraineeSkill = 0; INT16 bTraineeSkill = 0;
INT8 bTrainerEffSkill = 0; INT16 bTrainerEffSkill = 0;
INT8 bTrainerNatSkill = 0; INT16 bTrainerNatSkill = 0;
INT16 bTrainingBonus = 0; INT16 bTrainingBonus = 0;
INT8 bOpinionFactor; INT8 bOpinionFactor;
@@ -4694,15 +4694,15 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE
switch( bTrainStat ) switch( bTrainStat )
{ {
case( STRENGTH ): case( STRENGTH ):
bTrainerEffSkill = (INT8)EffectiveStrength ( pInstructor ); bTrainerEffSkill = EffectiveStrength ( pInstructor, TRUE );
bTrainerNatSkill = pInstructor->stats.bStrength; bTrainerNatSkill = pInstructor->stats.bStrength;
break; break;
case( DEXTERITY ): case( DEXTERITY ):
bTrainerEffSkill = EffectiveDexterity ( pInstructor ); bTrainerEffSkill = EffectiveDexterity ( pInstructor, TRUE );
bTrainerNatSkill = pInstructor->stats.bDexterity; bTrainerNatSkill = pInstructor->stats.bDexterity;
break; break;
case( AGILITY ): case( AGILITY ):
bTrainerEffSkill = EffectiveAgility( pInstructor ); bTrainerEffSkill = EffectiveAgility( pInstructor, TRUE );
bTrainerNatSkill = pInstructor->stats.bAgility; bTrainerNatSkill = pInstructor->stats.bAgility;
break; break;
case( HEALTH ): case( HEALTH ):
@@ -4743,9 +4743,9 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE
if( pStudent == NULL ) if( pStudent == NULL )
{ {
// assume these default values // assume these default values
bTraineeEffWisdom = 100; bTraineeEffWisdom = 100;
bTraineeNatWisdom = 100; bTraineeNatWisdom = 100;
bTraineeSkill = 0; bTraineeSkill = 0;
bOpinionFactor = 0; bOpinionFactor = 0;
} }
else else
@@ -4815,7 +4815,7 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE
// SANDRO - Teaching Skill now increases the effective skill to determine if we can instruct other mercs // SANDRO - Teaching Skill now increases the effective skill to determine if we can instruct other mercs
if( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pInstructor, TEACHING_NT )) if( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pInstructor, TEACHING_NT ))
{ {
if( bTraineeSkill >= (bTrainerEffSkill + gSkillTraitValues.ubTGEffectiveSkillValueForTeaching) ) if( bTraineeSkill >= (bTrainerEffSkill + (INT16)(gSkillTraitValues.ubTGEffectiveSkillValueForTeaching)) )
return ( 0 ); return ( 0 );
} }
else if( bTraineeSkill >= bTrainerEffSkill ) else if( bTraineeSkill >= bTrainerEffSkill )
@@ -4882,7 +4882,7 @@ INT16 GetBonusTrainingPtsDueToInstructor( SOLDIERTYPE *pInstructor, SOLDIERTYPE
sTrainingPts += ( ( ( bTrainingBonus + (bFacilityModifier-100) + bOpinionFactor ) * sTrainingPts ) / 100 ); sTrainingPts += ( ( ( bTrainingBonus + (bFacilityModifier-100) + bOpinionFactor ) * sTrainingPts ) / 100 );
// adjust for instructor fatigue // adjust for instructor fatigue
ReducePointsForFatigue( pInstructor, (UINT16 *)&sTrainingPts ); ReducePointsForFatigue( pInstructor, (UINT32 *)&sTrainingPts );
return( sTrainingPts ); return( sTrainingPts );
} }
@@ -4994,7 +4994,7 @@ INT16 GetSoldierTrainingPts( SOLDIERTYPE *pSoldier, INT8 bTrainStat, UINT16 *pus
sTrainingPts += ( ( bTrainingBonus * sTrainingPts ) / 100 ); sTrainingPts += ( ( bTrainingBonus * sTrainingPts ) / 100 );
// adjust for fatigue // adjust for fatigue
ReducePointsForFatigue( pSoldier, (UINT16 *)&sTrainingPts ); ReducePointsForFatigue( pSoldier, (UINT32 *)&sTrainingPts );
return( sTrainingPts ); return( sTrainingPts );
} }
@@ -5110,7 +5110,7 @@ INT16 GetSoldierStudentPts( SOLDIERTYPE *pSoldier, INT8 bTrainStat, UINT16 *pusM
sTrainingPts += ( ( bTrainingBonus * sTrainingPts ) / 100 ); sTrainingPts += ( ( bTrainingBonus * sTrainingPts ) / 100 );
// adjust for fatigue // adjust for fatigue
ReducePointsForFatigue( pSoldier, (UINT16 *)&sTrainingPts ); ReducePointsForFatigue( pSoldier, (UINT32 *)&sTrainingPts );
// now add in stuff for trainer // now add in stuff for trainer
@@ -5378,7 +5378,7 @@ INT16 GetTownTrainPtsForCharacter( SOLDIERTYPE *pTrainer, UINT16 *pusMaxPts )
// adjust for fatigue of trainer // adjust for fatigue of trainer
ReducePointsForFatigue( pTrainer, (UINT16 *)&sTotalTrainingPts ); ReducePointsForFatigue( pTrainer, (UINT32 *)&sTotalTrainingPts );
/* ARM: Decided this didn't make much sense - the guys I'm training damn well BETTER be loyal - and screw the rest! /* ARM: Decided this didn't make much sense - the guys I'm training damn well BETTER be loyal - and screw the rest!
+2 -2
View File
@@ -1442,14 +1442,14 @@ UINT32 VirtualSoldierDressWound( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pVictim, OB
uiDressSkill = ( ( 7 * EffectiveMedical( pSoldier ) ) + // medical knowledge uiDressSkill = ( ( 7 * EffectiveMedical( pSoldier ) ) + // medical knowledge
( sStatus) + // state of medical kit ( sStatus) + // state of medical kit
(10 * EffectiveExpLevel( pSoldier ) ) + // battle injury experience (10 * EffectiveExpLevel( pSoldier ) ) + // battle injury experience
EffectiveDexterity( pSoldier ) ) / 10; // general "handiness" EffectiveDexterity( pSoldier, FALSE ) ) / 10; // general "handiness"
} }
else else
{ {
uiDressSkill = ( ( 3 * EffectiveMedical( pSoldier ) ) + // medical knowledge uiDressSkill = ( ( 3 * EffectiveMedical( pSoldier ) ) + // medical knowledge
( 2 * sStatus) + // state of medical kit ( 2 * sStatus) + // state of medical kit
(10 * EffectiveExpLevel( pSoldier ) ) + // battle injury experience (10 * EffectiveExpLevel( pSoldier ) ) + // battle injury experience
EffectiveDexterity( pSoldier ) ) / 7; // general "handiness" EffectiveDexterity( pSoldier, FALSE ) ) / 7; // general "handiness"
} }
// try to use every AP that the merc has left // try to use every AP that the merc has left
+23 -23
View File
@@ -912,8 +912,8 @@ INT16 FacilityRiskResult( SOLDIERTYPE *pSoldier, UINT8 ubRiskType, UINT8 ubFacil
INT16 Result = 0; INT16 Result = 0;
INT32 iChance; INT32 iChance;
INT8 bBaseEffect; INT16 bBaseEffect;
UINT8 ubRange; UINT16 ubRange;
// Read risk data directly from facility array. // Read risk data directly from facility array.
iChance = gFacilityTypes[ubFacilityType].AssignmentData[ubAssignmentType].Risk[ubRiskType].usChance; iChance = gFacilityTypes[ubFacilityType].AssignmentData[ubAssignmentType].Risk[ubRiskType].usChance;
@@ -922,11 +922,11 @@ INT16 FacilityRiskResult( SOLDIERTYPE *pSoldier, UINT8 ubRiskType, UINT8 ubFacil
// For now, only these variables can effect risk outcome. In the future there may be more effects, like traits // For now, only these variables can effect risk outcome. In the future there may be more effects, like traits
// and personality, or even sex. // and personality, or even sex.
UINT8 ubStrength = EffectiveStrength( pSoldier ); INT16 ubStrength = EffectiveStrength( pSoldier, FALSE );
UINT8 ubAgility = EffectiveAgility( pSoldier ); INT16 ubAgility = EffectiveAgility( pSoldier, FALSE );
UINT8 ubDexterity = EffectiveDexterity( pSoldier ); INT16 ubDexterity = EffectiveDexterity( pSoldier, FALSE );
UINT8 ubHealth = __min(pSoldier->stats.bLife, pSoldier->stats.bLifeMax); UINT8 ubHealth = __min(pSoldier->stats.bLife, pSoldier->stats.bLifeMax);
UINT8 ubWisdom = EffectiveWisdom( pSoldier ); INT16 ubWisdom = EffectiveWisdom( pSoldier );
UINT8 ubLeadership = EffectiveLeadership( pSoldier ); UINT8 ubLeadership = EffectiveLeadership( pSoldier );
UINT8 ubExplosives = EffectiveExplosive( pSoldier ); UINT8 ubExplosives = EffectiveExplosive( pSoldier );
UINT8 ubExpLevel = EffectiveExpLevel( pSoldier ); UINT8 ubExpLevel = EffectiveExpLevel( pSoldier );
@@ -961,7 +961,7 @@ INT16 FacilityRiskResult( SOLDIERTYPE *pSoldier, UINT8 ubRiskType, UINT8 ubFacil
sAbsoluteMinResult = bBaseEffect - ubRange; sAbsoluteMinResult = bBaseEffect - ubRange;
} }
INT8 bCombinedStats; INT16 bCombinedStats;
// Begin calculating the effect of skills on increasing/reducing final result. Use a mix of stats to reach a range // Begin calculating the effect of skills on increasing/reducing final result. Use a mix of stats to reach a range
// of 0 to 100. // of 0 to 100.
@@ -969,52 +969,52 @@ INT16 FacilityRiskResult( SOLDIERTYPE *pSoldier, UINT8 ubRiskType, UINT8 ubFacil
switch (ubRiskType) switch (ubRiskType)
{ {
case RISK_STRENGTH: case RISK_STRENGTH:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.2) + (ubAgility * 0.3) + (ubExpLevel * 5)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.2) + (ubAgility * 0.3) + (ubExpLevel * 5));
break; break;
case RISK_DEXTERITY: case RISK_DEXTERITY:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.4) + (ubExpLevel * 6)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.4) + (ubExpLevel * 6));
break; break;
case RISK_AGILITY: case RISK_AGILITY:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.2) + (ubExpLevel * 8)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.2) + (ubExpLevel * 8));
break; break;
case RISK_HEALTH: case RISK_HEALTH:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.5) + (ubExpLevel * 5)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.5) + (ubExpLevel * 5));
break; break;
case RISK_WISDOM: case RISK_WISDOM:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.6) + (ubExpLevel * 4)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.6) + (ubExpLevel * 4));
break; break;
case RISK_MARKSMANSHIP: case RISK_MARKSMANSHIP:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.2) + (ubAgility * 0.4) + (ubExpLevel * 4)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.2) + (ubAgility * 0.4) + (ubExpLevel * 4));
break; break;
case RISK_MEDICAL: case RISK_MEDICAL:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.3) + (ubDexterity * 0.4) + (ubExpLevel * 3)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.3) + (ubDexterity * 0.4) + (ubExpLevel * 3));
break; break;
case RISK_MECHANICAL: case RISK_MECHANICAL:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.3) + (ubDexterity * 0.5) + (ubExpLevel * 2)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.3) + (ubDexterity * 0.5) + (ubExpLevel * 2));
break; break;
case RISK_LEADERSHIP: case RISK_LEADERSHIP:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.4) + (ubLeadership * 0.3) + (ubExpLevel * 3)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.4) + (ubLeadership * 0.3) + (ubExpLevel * 3));
break; break;
case RISK_EXPLOSIVES: case RISK_EXPLOSIVES:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.2) + (ubAgility * 0.3) + (ubDexterity * 0.3) + (ubExpLevel * 2)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.2) + (ubAgility * 0.3) + (ubDexterity * 0.3) + (ubExpLevel * 2));
break; break;
case RISK_INJURY: case RISK_INJURY:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.2) + (ubDexterity * 0.2) + (ubAgility * 0.4) + (ubExpLevel * 2)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.2) + (ubDexterity * 0.2) + (ubAgility * 0.4) + (ubExpLevel * 2));
break; break;
case RISK_MORALE: case RISK_MORALE:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.2) + (ubLeadership * 0.4) + (ubExpLevel * 4)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.2) + (ubLeadership * 0.4) + (ubExpLevel * 4));
break; break;
case RISK_FATIGUE: case RISK_FATIGUE:
bCombinedStats = (INT8)__min(100, (ubAgility * 0.1) + (ubStrength * 0.3) + (ubHealth * 0.2) + (ubExpLevel * 4)); bCombinedStats = (INT16)__min(100, (ubAgility * 0.1) + (ubStrength * 0.3) + (ubHealth * 0.2) + (ubExpLevel * 4));
break; break;
case RISK_DRUNK: case RISK_DRUNK:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.5) + (ubHealth * 0.3) + (ubExpLevel * 2)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.5) + (ubHealth * 0.3) + (ubExpLevel * 2));
break; break;
case RISK_LOYALTY_LOCAL: case RISK_LOYALTY_LOCAL:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.2) + (ubLeadership * 0.3) + (ubStrength * 0.1) + (ubExpLevel * 2) + (ubLocalLoyalty * 0.2) ); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.2) + (ubLeadership * 0.3) + (ubStrength * 0.1) + (ubExpLevel * 2) + (ubLocalLoyalty * 0.2) );
break; break;
case RISK_LOYALTY_GLOBAL: case RISK_LOYALTY_GLOBAL:
bCombinedStats = (INT8)__min(100, (ubWisdom * 0.3) + (ubLeadership * 0.3) + (ubExpLevel * 2) + (ubLocalLoyalty * 0.2)); bCombinedStats = (INT16)__min(100, (ubWisdom * 0.3) + (ubLeadership * 0.3) + (ubExpLevel * 2) + (ubLocalLoyalty * 0.2));
break; break;
} }
+1 -1
View File
@@ -1291,7 +1291,7 @@ INT32 GetStrategicMvtSpeed( SOLDIERTYPE *pCharacter )
// avg of strength and agility * percentage health..very simple..replace later // avg of strength and agility * percentage health..very simple..replace later
iSpeed = ( INT32 )( ( pCharacter->stats.bAgility + pCharacter->stats.bStrength ) / 2 ); iSpeed = ( INT32 )( ( pCharacter->stats.bAgility + pCharacter->stats.bStrength + pCharacter->bExtraStrength ) / 2 );
iSpeed *= ( INT32 )(( pCharacter->stats.bLife ) ); iSpeed *= ( INT32 )(( pCharacter->stats.bLife ) );
iSpeed /= ( INT32 )pCharacter->stats.bLifeMax; iSpeed /= ( INT32 )pCharacter->stats.bLifeMax;
+1 -1
View File
@@ -2854,7 +2854,7 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo
if ( OK_INSECTOR_MERC( pTeamSoldier ) && PythSpacesAway( sGridNo, pTeamSoldier->sGridNo ) < bDistance && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep && if ( OK_INSECTOR_MERC( pTeamSoldier ) && PythSpacesAway( sGridNo, pTeamSoldier->sGridNo ) < bDistance && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep &&
SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, 0, 0, TRUE ) ) SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, 0, 0, TRUE ) )
{ {
if ( usQuoteNum == 66 && (INT8) Random( 100 ) > EffectiveWisdom( pTeamSoldier ) ) if ( usQuoteNum == 66 && (INT16) Random( 100 ) > EffectiveWisdom( pTeamSoldier ) )
{ {
continue; continue;
} }
+4 -94
View File
@@ -364,107 +364,17 @@ void HandleEndTurnDrugAdjustments( SOLDIERTYPE *pSoldier )
// only do the checks for the player team, as soldiers do not have a gMercProfiles // only do the checks for the player team, as soldiers do not have a gMercProfiles
if ( pSoldier->bTeam == gbPlayerNum) if ( pSoldier->bTeam == gbPlayerNum)
{ {
// Flugente 2012-05-25: the status drugs cause weird behaviour with the stat repairing behaviour of doctoring, so this is commented out till a working solution has been found
/*
//////////////// STRENGTH //////////////// //////////////// STRENGTH ////////////////
// strength we would normally have right now pSoldier->bExtraStrength = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_STRENGTH ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_STRENGTH ];
INT8 strength = gMercProfiles[ pSoldier->ubProfile ].bStrength;// Madd: commenting out this part b/c it breaks doctoring! - pSoldier->ubCriticalStatDamage[ DAMAGED_STAT_STRENGTH ];
INT8 strengthmodifier = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_STRENGTH ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_STRENGTH ];
// cap modifier at 25, as currently stats cant go above 127 (INT8)
strengthmodifier = min(25, strengthmodifier);
UINT32 newstrength = max(1, strength + strengthmodifier);
newstrength = min(126, newstrength);
pSoldier->stats.bStrength = (INT8)newstrength;
if ( strengthmodifier > 0 )
{
pSoldier->timeChanges.uiChangeStrengthTime = GetJA2Clock();
pSoldier->usValueGoneUp |= ( STRENGTH_INCREASE );
}
else if ( strengthmodifier < 0 )
{
pSoldier->timeChanges.uiChangeStrengthTime = GetJA2Clock();
pSoldier->usValueGoneUp &= ~( STRENGTH_INCREASE );
}
//////////////// DEXTERITY //////////////// //////////////// DEXTERITY ////////////////
// dexterity we would normally have right now pSoldier->bExtraDexterity = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_DEXTERITY ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_DEXTERITY ];
INT8 dexterity = gMercProfiles[ pSoldier->ubProfile ].bDexterity;// Madd: commenting out this part b/c it breaks doctoring! - pSoldier->ubCriticalStatDamage[ DAMAGED_STAT_DEXTERITY ];
INT8 dexteritymodifier = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_DEXTERITY ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_DEXTERITY ];
// cap modifier at 25, as currently stats cant go above 127 (INT8)
dexteritymodifier = min(25, dexteritymodifier);
UINT32 newdexterity = max(1, dexterity + dexteritymodifier);
newdexterity = min(126, newdexterity);
pSoldier->stats.bDexterity = newdexterity;
if ( dexteritymodifier > 0 )
{
pSoldier->timeChanges.uiChangeDexterityTime = GetJA2Clock();
pSoldier->usValueGoneUp |= ( DEX_INCREASE );
}
else if ( dexteritymodifier < 0 )
{
pSoldier->timeChanges.uiChangeDexterityTime = GetJA2Clock();
pSoldier->usValueGoneUp &= ~( DEX_INCREASE );
}
//////////////// AGILITY //////////////// //////////////// AGILITY ////////////////
// agility we would normally have right now pSoldier->bExtraAgility = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_AGILITY ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_AGILITY ];
INT8 agility = gMercProfiles[ pSoldier->ubProfile ].bAgility;// Madd: commenting out this part b/c it breaks doctoring! - pSoldier->ubCriticalStatDamage[ DAMAGED_STAT_AGILITY ];
INT8 agilitymodifier = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_AGILITY ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_AGILITY ];
// cap modifier at 25, as currently stats cant go above 127 (INT8)
agilitymodifier = min(25, agilitymodifier);
UINT32 newagility = max(1, agility + agilitymodifier);
newagility = min(126, newagility);
pSoldier->stats.bAgility = newagility;
if ( agilitymodifier > 0 )
{
pSoldier->timeChanges.uiChangeAgilityTime = GetJA2Clock();
pSoldier->usValueGoneUp |= ( AGIL_INCREASE );
}
else if ( agilitymodifier < 0 )
{
pSoldier->timeChanges.uiChangeAgilityTime = GetJA2Clock();
pSoldier->usValueGoneUp &= ~( AGIL_INCREASE );
}
//////////////// WISDOM //////////////// //////////////// WISDOM ////////////////
// wisdom we would normally have right now pSoldier->bExtraWisdom = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_WISDOM ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_WISDOM ];
INT8 wisdom = gMercProfiles[ pSoldier->ubProfile ].bWisdom;// Madd: commenting out this part b/c it breaks doctoring! - pSoldier->ubCriticalStatDamage[ DAMAGED_STAT_WISDOM ];
INT8 wisdommodifier = pSoldier->drugs.bDrugEffect[ DRUG_TYPE_WISDOM ] - pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_WISDOM ];
// cap modifier at 25, as currently stats cant go above 127 (INT8)
wisdommodifier = min(25, wisdommodifier);
UINT32 newwisdom = max(1, wisdom + wisdommodifier);
newwisdom = min(126, newwisdom);
pSoldier->stats.bWisdom = newwisdom;
if ( wisdommodifier > 0 )
{
pSoldier->timeChanges.uiChangeWisdomTime = GetJA2Clock();
pSoldier->usValueGoneUp |= ( WIS_INCREASE );
}
else if ( wisdommodifier < 0 )
{
pSoldier->timeChanges.uiChangeWisdomTime = GetJA2Clock();
pSoldier->usValueGoneUp &= ~( WIS_INCREASE );
}*/
// if our sideeffect count is 1 (which should occur a while AFTER we took the drug), we suddenly become blind for a few turns... // if our sideeffect count is 1 (which should occur a while AFTER we took the drug), we suddenly become blind for a few turns...
if ( pSoldier->drugs.bDrugEffect[ DRUG_TYPE_BLIND ] == 0 && pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_BLIND ] == 1 ) if ( pSoldier->drugs.bDrugEffect[ DRUG_TYPE_BLIND ] == 0 && pSoldier->drugs.bDrugSideEffect[ DRUG_TYPE_BLIND ] == 1 )
+1 -1
View File
@@ -289,7 +289,7 @@ void InteractWithClosedDoor( SOLDIERTYPE *pSoldier, UINT8 ubHandleCode )
BOOLEAN DoTrapCheckOnStartingMenu( SOLDIERTYPE * pSoldier, DOOR * pDoor ) BOOLEAN DoTrapCheckOnStartingMenu( SOLDIERTYPE * pSoldier, DOOR * pDoor )
{ {
INT8 bDetectLevel; INT16 bDetectLevel;
if ( pDoor && pDoor->fLocked && pDoor->ubTrapID != NO_TRAP && pDoor->bPerceivedTrapped == DOOR_PERCEIVED_UNKNOWN ) if ( pDoor && pDoor->fLocked && pDoor->ubTrapID != NO_TRAP && pDoor->bPerceivedTrapped == DOOR_PERCEIVED_UNKNOWN )
{ {
+6 -3
View File
@@ -4599,7 +4599,8 @@ void SetOffBoobyTrap( ITEM_POOL * pItemPool )
BOOLEAN ContinuePastBoobyTrap( SOLDIERTYPE * pSoldier, INT32 sGridNo, INT8 bLevel, INT32 iItemIndex, BOOLEAN fInStrategic, BOOLEAN *pfSaidQuote ) BOOLEAN ContinuePastBoobyTrap( SOLDIERTYPE * pSoldier, INT32 sGridNo, INT8 bLevel, INT32 iItemIndex, BOOLEAN fInStrategic, BOOLEAN *pfSaidQuote )
{ {
BOOLEAN fBoobyTrapKnowledge; BOOLEAN fBoobyTrapKnowledge;
INT8 bTrapDifficulty, bTrapDetectLevel; INT8 bTrapDifficulty;
INT16 bTrapDetectLevel;
OBJECTTYPE * pObj; OBJECTTYPE * pObj;
pObj = &(gWorldItems[ iItemIndex ].object); pObj = &(gWorldItems[ iItemIndex ].object);
@@ -5028,7 +5029,8 @@ BOOLEAN NearbyGroundSeemsWrong( SOLDIERTYPE * pSoldier, INT32 sGridNo, BOOLEAN f
{ {
INT32 sNextGridNo; INT32 sNextGridNo;
// BOOLEAN fWorthChecking = FALSE, fProblemExists = FALSE, fDetectedProblem = FALSE; // BOOLEAN fWorthChecking = FALSE, fProblemExists = FALSE, fDetectedProblem = FALSE;
UINT8 ubDetectLevel, ubDirection; UINT16 ubDetectLevel;
UINT8 ubDirection;
MAP_ELEMENT * pMapElement; MAP_ELEMENT * pMapElement;
UINT32 fCheckFlag; UINT32 fCheckFlag;
UINT32 uiWorldBombIndex; UINT32 uiWorldBombIndex;
@@ -5451,7 +5453,8 @@ void ToggleItemGlow( BOOLEAN fOn )
BOOLEAN ContinuePastBoobyTrapInMapScreen( OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier ) BOOLEAN ContinuePastBoobyTrapInMapScreen( OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier )
{ {
BOOLEAN fBoobyTrapKnowledge; BOOLEAN fBoobyTrapKnowledge;
INT8 bTrapDifficulty, bTrapDetectLevel; INT8 bTrapDifficulty;
INT16 bTrapDetectLevel;
if ((*pObject)[0]->data.bTrap > 0) if ((*pObject)[0]->data.bTrap > 0)
{ {
+2 -2
View File
@@ -11196,7 +11196,7 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
//swprintf( pStr, L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s %s\n%s %1.1f %s", //swprintf( pStr, L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s %s\n%s %1.1f %s",
INT8 accuracy = (UsingNewCTHSystem()==true?Weapon[ usItem ].nAccuracy:Weapon[ usItem ].bAccuracy); INT8 accuracy = (UsingNewCTHSystem()==true?Weapon[ usItem ].nAccuracy:Weapon[ usItem ].bAccuracy);
accuracy *= accuracyheatmultiplicator; accuracy = (INT8)(accuracy * accuracyheatmultiplicator);
#ifdef CHINESE #ifdef CHINESE
swprintf( pStr, ChineseSpecString4, swprintf( pStr, ChineseSpecString4,
#else #else
@@ -11264,7 +11264,7 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
//Info for weapons //Info for weapons
INT8 accuracy = (UsingNewCTHSystem()==true?Weapon[ usItem ].nAccuracy:Weapon[ usItem ].bAccuracy); INT8 accuracy = (UsingNewCTHSystem()==true?Weapon[ usItem ].nAccuracy:Weapon[ usItem ].bAccuracy);
accuracy *= accuracyheatmultiplicator; accuracy = (INT8)(accuracy * accuracyheatmultiplicator);
#ifdef CHINESE #ifdef CHINESE
swprintf( pStr, L"%s [%d%£¥]\n%s %d\n%s %d\n%s %d (%d)\n%s %s\n%s %1.1f %s", swprintf( pStr, L"%s [%d%£¥]\n%s %d\n%s %d\n%s %d (%d)\n%s %s\n%s %1.1f %s",
+21 -17
View File
@@ -572,7 +572,7 @@ void UpdateSelectedSoldier( UINT16 usSoldierID, BOOLEAN fSelect );
void CheckForFacePanelStartAnims( SOLDIERTYPE *pSoldier, INT16 sPanelX, INT16 sPanelY ); void CheckForFacePanelStartAnims( SOLDIERTYPE *pSoldier, INT16 sPanelX, INT16 sPanelY );
void HandleSoldierFaceFlash( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY ); void HandleSoldierFaceFlash( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY );
BOOLEAN PlayerExistsInSlot( UINT8 ubID ); BOOLEAN PlayerExistsInSlot( UINT8 ubID );
void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged ); // SADNRO - added argument void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged, BOOLEAN fAugmented ); // SANDRO - added argument // Flugente - me too
extern void UpdateItemHatches(); extern void UpdateItemHatches();
@@ -2755,61 +2755,61 @@ void RenderSMPanel( BOOLEAN *pfDirty )
mprintf( SM_CAMMO_PERCENT_X, SM_CAMMO_PERCENT_Y, L"%%" ); mprintf( SM_CAMMO_PERCENT_X, SM_CAMMO_PERCENT_Y, L"%%" );
#endif #endif
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeAgilityTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & AGIL_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_AGILITY] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeAgilityTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & AGIL_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_AGILITY] > 0 )) ? TRUE : FALSE), MercUnderTheInfluence(gpSMCurrentMerc, DRUG_TYPE_AGILITY)); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bAgility ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bAgility + gpSMCurrentMerc->bExtraAgility );
FindFontRightCoordinates(SM_AGI_X, SM_AGI_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_AGI_X, SM_AGI_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeDexterityTime,( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & DEX_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_DEXTERITY] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeDexterityTime,( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & DEX_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_DEXTERITY] > 0 )) ? TRUE : FALSE), MercUnderTheInfluence(gpSMCurrentMerc, DRUG_TYPE_DEXTERITY)); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bDexterity ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bDexterity + gpSMCurrentMerc->bExtraDexterity );
FindFontRightCoordinates(SM_DEX_X, SM_DEX_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_DEX_X, SM_DEX_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeStrengthTime, ( BOOLEAN )( gpSMCurrentMerc->usValueGoneUp & STRENGTH_INCREASE?TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_STRENGTH] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeStrengthTime, ( BOOLEAN )( gpSMCurrentMerc->usValueGoneUp & STRENGTH_INCREASE?TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_STRENGTH] > 0 )) ? TRUE : FALSE), MercUnderTheInfluence(gpSMCurrentMerc, DRUG_TYPE_STRENGTH)); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bStrength ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bStrength + gpSMCurrentMerc->bExtraStrength );
FindFontRightCoordinates(SM_STR_X, SM_STR_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_STR_X, SM_STR_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeLeadershipTime, ( BOOLEAN )( gpSMCurrentMerc->usValueGoneUp & LDR_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_LEADERSHIP] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeLeadershipTime, ( BOOLEAN )( gpSMCurrentMerc->usValueGoneUp & LDR_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_LEADERSHIP] > 0 )) ? TRUE : FALSE), FALSE); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bLeadership ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bLeadership );
FindFontRightCoordinates(SM_CHAR_X, SM_CHAR_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_CHAR_X, SM_CHAR_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeWisdomTime,( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & WIS_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_WISDOM] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeWisdomTime,( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & WIS_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_WISDOM] > 0 )) ? TRUE : FALSE), MercUnderTheInfluence(gpSMCurrentMerc, DRUG_TYPE_WISDOM)); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bWisdom ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bWisdom + gpSMCurrentMerc->bExtraWisdom );
FindFontRightCoordinates(SM_WIS_X, SM_WIS_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_WIS_X, SM_WIS_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeLevelTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & LVL_INCREASE? TRUE: FALSE ), FALSE ); UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeLevelTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & LVL_INCREASE? TRUE: FALSE ), FALSE , FALSE);
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bExpLevel ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bExpLevel + gpSMCurrentMerc->bExtraExpLevel );
FindFontRightCoordinates(SM_EXPLVL_X, SM_EXPLVL_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_EXPLVL_X, SM_EXPLVL_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeMarksmanshipTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & MRK_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_MARKSMANSHIP] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeMarksmanshipTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & MRK_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_MARKSMANSHIP] > 0 )) ? TRUE : FALSE), FALSE); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bMarksmanship ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bMarksmanship );
FindFontRightCoordinates(SM_MRKM_X, SM_MRKM_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_MRKM_X, SM_MRKM_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeExplosivesTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & EXP_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_EXPLOSIVES] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeExplosivesTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & EXP_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_EXPLOSIVES] > 0 )) ? TRUE : FALSE), FALSE); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bExplosive ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bExplosive );
FindFontRightCoordinates(SM_EXPL_X, SM_EXPL_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_EXPL_X, SM_EXPL_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeMechanicalTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & MECH_INCREASE ? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_MECHANICAL] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeMechanicalTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & MECH_INCREASE ? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_MECHANICAL] > 0 )) ? TRUE : FALSE), FALSE); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bMechanical ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bMechanical );
FindFontRightCoordinates(SM_MECH_X, SM_MECH_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_MECH_X, SM_MECH_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
mprintf( usX, usY , sString ); mprintf( usX, usY , sString );
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeMedicalTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & MED_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_MEDICAL] > 0 )) ? TRUE : FALSE)); // SANDRO UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeMedicalTime, ( BOOLEAN ) ( gpSMCurrentMerc->usValueGoneUp & MED_INCREASE? TRUE: FALSE ), ( BOOLEAN ) ( ( gGameOptions.fNewTraitSystem && ( gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_MEDICAL] > 0 )) ? TRUE : FALSE), FALSE); // SANDRO
swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bMedical ); swprintf( sString, L"%2d", gpSMCurrentMerc->stats.bMedical );
FindFontRightCoordinates(SM_MED_X, SM_MED_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY); FindFontRightCoordinates(SM_MED_X, SM_MED_Y ,SM_STATS_WIDTH ,SM_STATS_HEIGHT ,sString, BLOCKFONT2, &usX, &usY);
@@ -3057,7 +3057,7 @@ void RenderSMPanel( BOOLEAN *pfDirty )
} }
void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged ) // SANDRO - added argument void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged, BOOLEAN fAugmented ) // SANDRO - added argument // Flugente - me too
{ {
if ( gpSMCurrentMerc->stats.bLife >= OKLIFE ) if ( gpSMCurrentMerc->stats.bLife >= OKLIFE )
{ {
@@ -3077,6 +3077,10 @@ void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged ) // S
SetFontForeground( FONT_RED ); SetFontForeground( FONT_RED );
} }
} }
else if ( fAugmented )
{
SetRGBFontForeground( 250, 5, 250 );
}
else else
{ {
SetFontBackground( FONT_MCOLOR_BLACK ); SetFontBackground( FONT_MCOLOR_BLACK );
+7 -7
View File
@@ -3042,7 +3042,7 @@ UINT32 CalculateCarriedWeight( SOLDIERTYPE * pSoldier )
UINT32 uiTotalWeight = 0; UINT32 uiTotalWeight = 0;
UINT32 uiPercent; UINT32 uiPercent;
UINT8 ubLoop; UINT8 ubLoop;
UINT16 ubStrengthForCarrying; UINT32 ubStrengthForCarrying;
//Pulmu: Changes for dynamic ammo weight //Pulmu: Changes for dynamic ammo weight
for( ubLoop = 0; ubLoop < pSoldier->inv.size(); ubLoop++) for( ubLoop = 0; ubLoop < pSoldier->inv.size(); ubLoop++)
@@ -3053,7 +3053,7 @@ UINT32 CalculateCarriedWeight( SOLDIERTYPE * pSoldier )
// for now, assume soldiers can carry 1/2 their strength in KGs without penalty. // for now, assume soldiers can carry 1/2 their strength in KGs without penalty.
// instead of multiplying by 100 for percent, and then dividing by 10 to account // instead of multiplying by 100 for percent, and then dividing by 10 to account
// for weight units being in 10ths of kilos, not kilos... we just start with 10 instead of 100! // for weight units being in 10ths of kilos, not kilos... we just start with 10 instead of 100!
ubStrengthForCarrying = EffectiveStrength( pSoldier ); ubStrengthForCarrying = EffectiveStrength( pSoldier, FALSE );
if ( ubStrengthForCarrying > 80 ) if ( ubStrengthForCarrying > 80 )
{ {
ubStrengthForCarrying += (ubStrengthForCarrying - 80); ubStrengthForCarrying += (ubStrengthForCarrying - 80);
@@ -12991,17 +12991,17 @@ INT32 GetGunAccuracy( OBJECTTYPE *pObj )
if ( gGameOptions.fWeaponOverheating ) if ( gGameOptions.fWeaponOverheating )
{ {
FLOAT overheatdamagepercentage = GetGunOverheatDamagePercentage( pObj ); FLOAT overheatdamagepercentage = GetGunOverheatDamagePercentage( pObj );
FLOAT accuracymalus = (max((FLOAT)1.0, overheatdamagepercentage) - (FLOAT)1.0) * 0.1; FLOAT accuracymalus = (max(1.0f, overheatdamagepercentage) - 1.0f) * 0.1;
accuracyheatmultiplicator = max((FLOAT)0.0, (FLOAT)1.0 - accuracymalus); accuracyheatmultiplicator = max(0.0f, 1.0f - accuracymalus);
} }
if(UsingNewCTHSystem() == false) if(UsingNewCTHSystem() == false)
return(accuracyheatmultiplicator * Weapon[pObj->usItem].bAccuracy); return( (INT32)(accuracyheatmultiplicator * Weapon[pObj->usItem].bAccuracy) );
INT32 bonus = 0; INT32 bonus = 0;
if ( pObj->exists() == true ) if ( pObj->exists() == true )
{ {
bonus = accuracyheatmultiplicator * Weapon[Item[pObj->usItem].uiIndex].nAccuracy; bonus = (INT32)(accuracyheatmultiplicator * Weapon[Item[pObj->usItem].uiIndex].nAccuracy);
bonus = (bonus * (*pObj)[0]->data.gun.bGunStatus) / 100; bonus = (bonus * (*pObj)[0]->data.gun.bGunStatus) / 100;
INT32 iModifier = GetAccuracyModifier( pObj ); INT32 iModifier = GetAccuracyModifier( pObj );
@@ -13487,7 +13487,7 @@ BOOLEAN OBJECTTYPE::TransformObject( SOLDIERTYPE * pSoldier, UINT8 ubStatusIndex
UINT16 usOrigItem = this->usItem; UINT16 usOrigItem = this->usItem;
UINT32 uiOrigClass = Item[this->usItem].usItemClass; UINT32 uiOrigClass = Item[this->usItem].usItemClass;
UINT8 ubOrigNumObjects = this->ubNumberOfObjects; UINT8 ubOrigNumObjects = this->ubNumberOfObjects;
UINT8 ubOrigStatus = (*this)[ubStatusIndex]->data.objectStatus; //Madd: moved this up here, since it was getting corrupted when applied to multiple results -- all statuses were coming back as 0 INT16 ubOrigStatus = (*this)[ubStatusIndex]->data.objectStatus; //Madd: moved this up here, since it was getting corrupted when applied to multiple results -- all statuses were coming back as 0
UINT16 usAPCost = 0; UINT16 usAPCost = 0;
INT32 iBPCost = 0; INT32 iBPCost = 0;
+5 -4
View File
@@ -306,7 +306,8 @@ BOOLEAN AttemptToLockDoor( SOLDIERTYPE * pSoldier, DOOR * pDoor )
BOOLEAN AttemptToCrowbarLock( SOLDIERTYPE * pSoldier, DOOR * pDoor ) BOOLEAN AttemptToCrowbarLock( SOLDIERTYPE * pSoldier, DOOR * pDoor )
{ {
INT32 iResult; INT32 iResult;
INT8 bStress, bSlot; INT16 bStress;
INT8 bSlot;
bSlot = FindUsableCrowbar( pSoldier ); bSlot = FindUsableCrowbar( pSoldier );
if ( bSlot == ITEM_NOT_FOUND ) if ( bSlot == ITEM_NOT_FOUND )
@@ -339,7 +340,7 @@ BOOLEAN AttemptToCrowbarLock( SOLDIERTYPE * pSoldier, DOOR * pDoor )
} }
// possibly damage crowbar // possibly damage crowbar
bStress = __min( EffectiveStrength( pSoldier ), LockTable[pDoor->ubLockID].ubSmashDifficulty + 30 ); bStress = __min( EffectiveStrength( pSoldier, FALSE ), LockTable[pDoor->ubLockID].ubSmashDifficulty + 30 );
// reduce crowbar status by random % between 0 and 5% // reduce crowbar status by random % between 0 and 5%
DamageObj( &(pSoldier->inv[ bSlot ]), (INT8) PreRandom( bStress / 20 ) ); DamageObj( &(pSoldier->inv[ bSlot ]), (INT8) PreRandom( bStress / 20 ) );
@@ -597,7 +598,7 @@ BOOLEAN AttemptToUntrapDoor( SOLDIERTYPE * pSoldier, DOOR * pDoor )
BOOLEAN ExamineDoorForTraps( SOLDIERTYPE * pSoldier, DOOR * pDoor ) BOOLEAN ExamineDoorForTraps( SOLDIERTYPE * pSoldier, DOOR * pDoor )
{ {
// Check to see if there is a trap or not on this door // Check to see if there is a trap or not on this door
INT8 bDetectLevel; INT16 bDetectLevel;
if (pDoor->ubTrapID == NO_TRAP) if (pDoor->ubTrapID == NO_TRAP)
{ {
@@ -632,7 +633,7 @@ BOOLEAN ExamineDoorForTraps( SOLDIERTYPE * pSoldier, DOOR * pDoor )
BOOLEAN HasDoorTrapGoneOff( SOLDIERTYPE * pSoldier, DOOR * pDoor ) BOOLEAN HasDoorTrapGoneOff( SOLDIERTYPE * pSoldier, DOOR * pDoor )
{ {
// Check to see if the soldier causes the trap to go off // Check to see if the soldier causes the trap to go off
INT8 bDetectLevel; INT16 bDetectLevel;
if (pDoor->ubTrapID != NO_TRAP) if (pDoor->ubTrapID != NO_TRAP)
{ {
+7 -7
View File
@@ -7339,7 +7339,7 @@ void CalcTargetMovementOffset( SOLDIERTYPE *pShooter, SOLDIERTYPE *pTarget, OBJE
// Now let's figure out how competent our shooter is. // Now let's figure out how competent our shooter is.
FLOAT iCombinedSkill = gGameCTHConstants.MOVEMENT_MRK * EffectiveMarksmanship( pShooter ); FLOAT iCombinedSkill = gGameCTHConstants.MOVEMENT_MRK * EffectiveMarksmanship( pShooter );
iCombinedSkill += gGameCTHConstants.MOVEMENT_WIS * EffectiveWisdom( pShooter ); iCombinedSkill += gGameCTHConstants.MOVEMENT_WIS * EffectiveWisdom( pShooter );
iCombinedSkill += gGameCTHConstants.MOVEMENT_DEX * EffectiveDexterity( pShooter ); iCombinedSkill += gGameCTHConstants.MOVEMENT_DEX * EffectiveDexterity( pShooter, FALSE );
iCombinedSkill += gGameCTHConstants.MOVEMENT_EXP_LEVEL * (EffectiveExpLevel( pShooter ) * 10); iCombinedSkill += gGameCTHConstants.MOVEMENT_EXP_LEVEL * (EffectiveExpLevel( pShooter ) * 10);
// Average // Average
@@ -7514,7 +7514,7 @@ void CalcRangeCompensationOffset( SOLDIERTYPE *pShooter, FLOAT *dMuzzleOffsetY,
// matter, and a skilled shooter will have a far greater chance of guessing the extra muzzle angle required. // matter, and a skilled shooter will have a far greater chance of guessing the extra muzzle angle required.
FLOAT iCombinedSkill = gGameCTHConstants.MOVEMENT_MRK * EffectiveMarksmanship( pShooter ); FLOAT iCombinedSkill = gGameCTHConstants.MOVEMENT_MRK * EffectiveMarksmanship( pShooter );
iCombinedSkill += gGameCTHConstants.MOVEMENT_WIS * EffectiveWisdom( pShooter ); iCombinedSkill += gGameCTHConstants.MOVEMENT_WIS * EffectiveWisdom( pShooter );
iCombinedSkill += gGameCTHConstants.MOVEMENT_DEX * EffectiveDexterity( pShooter ); iCombinedSkill += gGameCTHConstants.MOVEMENT_DEX * EffectiveDexterity( pShooter, FALSE );
iCombinedSkill += gGameCTHConstants.MOVEMENT_EXP_LEVEL * (EffectiveExpLevel( pShooter ) * 10); iCombinedSkill += gGameCTHConstants.MOVEMENT_EXP_LEVEL * (EffectiveExpLevel( pShooter ) * 10);
// Average // Average
@@ -7839,7 +7839,7 @@ UINT32 CalcCounterForceFrequency(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon)
{ {
INT8 traitLoop; INT8 traitLoop;
FLOAT iCounterForceFrequency = gGameCTHConstants.RECOIL_COUNTER_FREQUENCY_AGI * EffectiveAgility(pShooter); FLOAT iCounterForceFrequency = gGameCTHConstants.RECOIL_COUNTER_FREQUENCY_AGI * EffectiveAgility(pShooter, FALSE);
iCounterForceFrequency += gGameCTHConstants.RECOIL_COUNTER_FREQUENCY_EXP_LEVEL * EffectiveExpLevel(pShooter) * 10; iCounterForceFrequency += gGameCTHConstants.RECOIL_COUNTER_FREQUENCY_EXP_LEVEL * EffectiveExpLevel(pShooter) * 10;
// Average // Average
@@ -7895,8 +7895,8 @@ FLOAT CalcCounterForceMax(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT8 uiSt
if(uiStance == 0) if(uiStance == 0)
uiStance = gAnimControl[ pShooter->usAnimState ].ubHeight; uiStance = gAnimControl[ pShooter->usAnimState ].ubHeight;
FLOAT iCounterForceMax = gGameCTHConstants.RECOIL_MAX_COUNTER_STR * EffectiveStrength(pShooter); FLOAT iCounterForceMax = gGameCTHConstants.RECOIL_MAX_COUNTER_STR * EffectiveStrength(pShooter, FALSE);
iCounterForceMax += gGameCTHConstants.RECOIL_MAX_COUNTER_AGI * EffectiveAgility(pShooter); iCounterForceMax += gGameCTHConstants.RECOIL_MAX_COUNTER_AGI * EffectiveAgility(pShooter, FALSE);
iCounterForceMax += gGameCTHConstants.RECOIL_MAX_COUNTER_EXP_LEVEL * EffectiveExpLevel(pShooter) * 10; iCounterForceMax += gGameCTHConstants.RECOIL_MAX_COUNTER_EXP_LEVEL * EffectiveExpLevel(pShooter) * 10;
FLOAT iDivisor = gGameCTHConstants.RECOIL_MAX_COUNTER_STR + FLOAT iDivisor = gGameCTHConstants.RECOIL_MAX_COUNTER_STR +
@@ -7921,9 +7921,9 @@ UINT32 CalcCounterForceAccuracy(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT
{ {
INT8 traitLoop; INT8 traitLoop;
FLOAT iCounterForceAccuracy = gGameCTHConstants.RECOIL_COUNTER_ACCURACY_DEX * EffectiveDexterity(pShooter); FLOAT iCounterForceAccuracy = gGameCTHConstants.RECOIL_COUNTER_ACCURACY_DEX * EffectiveDexterity(pShooter, FALSE);
iCounterForceAccuracy += gGameCTHConstants.RECOIL_COUNTER_ACCURACY_WIS * EffectiveWisdom(pShooter); iCounterForceAccuracy += gGameCTHConstants.RECOIL_COUNTER_ACCURACY_WIS * EffectiveWisdom(pShooter);
iCounterForceAccuracy += gGameCTHConstants.RECOIL_COUNTER_ACCURACY_AGI * EffectiveAgility(pShooter); iCounterForceAccuracy += gGameCTHConstants.RECOIL_COUNTER_ACCURACY_AGI * EffectiveAgility(pShooter, FALSE);
iCounterForceAccuracy += gGameCTHConstants.RECOIL_COUNTER_ACCURACY_EXP_LEVEL * EffectiveExpLevel(pShooter) * 10; iCounterForceAccuracy += gGameCTHConstants.RECOIL_COUNTER_ACCURACY_EXP_LEVEL * EffectiveExpLevel(pShooter) * 10;
FLOAT iDivisor = gGameCTHConstants.RECOIL_COUNTER_ACCURACY_DEX + FLOAT iDivisor = gGameCTHConstants.RECOIL_COUNTER_ACCURACY_DEX +
+4 -4
View File
@@ -236,10 +236,10 @@ FLOAT CalcCounterForceChange( SOLDIERTYPE * pShooter, UINT32 uiCounterForceAccur
// HEADROCK HAM 4: Required for shooting mechanic // HEADROCK HAM 4: Required for shooting mechanic
extern INT8 EffectiveMarksmanship( SOLDIERTYPE * pSoldier ); extern INT8 EffectiveMarksmanship( SOLDIERTYPE * pSoldier );
extern INT8 EffectiveWisdom( SOLDIERTYPE * pSoldier ); extern INT16 EffectiveWisdom( SOLDIERTYPE * pSoldier );
extern INT8 EffectiveExpLevel( SOLDIERTYPE * pSoldier ); extern INT8 EffectiveExpLevel( SOLDIERTYPE * pSoldier );
extern INT8 EffectiveDexterity( SOLDIERTYPE * pSoldier ); extern INT16 EffectiveDexterity( SOLDIERTYPE * pSoldier, BOOLEAN fTrainer );
extern INT8 EffectiveStrength( SOLDIERTYPE * pSoldier ); extern INT16 EffectiveStrength( SOLDIERTYPE * pSoldier, BOOLEAN fTrainer );
extern INT8 EffectiveAgility( SOLDIERTYPE * pSoldier ); extern INT16 EffectiveAgility( SOLDIERTYPE * pSoldier, BOOLEAN fTrainer );
#endif #endif
+4 -4
View File
@@ -1726,9 +1726,9 @@ INT16 MinAPsToAttack(SOLDIERTYPE *pSoldier, INT32 sGridno, UINT8 ubAddTurningCos
return sAPCost; return sAPCost;
} }
INT8 CalcAimSkill( SOLDIERTYPE * pSoldier, UINT16 usWeapon ) INT16 CalcAimSkill( SOLDIERTYPE * pSoldier, UINT16 usWeapon )
{ {
INT8 bAimSkill; INT16 bAimSkill;
if ( Item[ usWeapon ].usItemClass == IC_GUN || Item[ usWeapon ].usItemClass == IC_LAUNCHER ) if ( Item[ usWeapon ].usItemClass == IC_GUN || Item[ usWeapon ].usItemClass == IC_LAUNCHER )
{ {
@@ -1740,7 +1740,7 @@ INT8 CalcAimSkill( SOLDIERTYPE * pSoldier, UINT16 usWeapon )
//if ( Item[ usInHand ].usItemClass == IC_BLADE ) //if ( Item[ usInHand ].usItemClass == IC_BLADE )
{ {
// KNIVES: modify aiming cost by avg of attacker's DEXTERITY & AGILITY // KNIVES: modify aiming cost by avg of attacker's DEXTERITY & AGILITY
bAimSkill = ( EffectiveDexterity( pSoldier ) + EffectiveAgility( pSoldier ) ) / 2; bAimSkill = ( EffectiveDexterity( pSoldier, FALSE ) + EffectiveAgility( pSoldier, FALSE ) ) / 2;
//return( 4 ); //return( 4 );
} }
return( bAimSkill ); return( bAimSkill );
@@ -1938,7 +1938,7 @@ INT16 MinAPsToShootOrStab(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubAddTurni
UINT32 uiMercFlags; UINT32 uiMercFlags;
UINT16 usTargID; UINT16 usTargID;
INT16 bFullAPs; INT16 bFullAPs;
INT8 bAimSkill; INT16 bAimSkill;
INT16 bAPCost = APBPConstants[AP_MIN_AIM_ATTACK]; INT16 bAPCost = APBPConstants[AP_MIN_AIM_ATTACK];
BOOLEAN fAddingTurningCost = FALSE; BOOLEAN fAddingTurningCost = FALSE;
BOOLEAN fAddingRaiseGunCost = FALSE; BOOLEAN fAddingRaiseGunCost = FALSE;
+74 -2
View File
@@ -46,6 +46,7 @@
#include "Campaign Types.h" #include "Campaign Types.h"
//#include "Queen Command.h" //#include "Queen Command.h"
#include "text.h" // added by Flugente
#endif #endif
#include "Animation Control.h" #include "Animation Control.h"
@@ -2268,8 +2269,20 @@ void CreateZombiefromCorpse( ROTTING_CORPSE * pCorpse, UINT16 usAnimState )
pNewSoldier->bPoisonAbsorption = 200 + Random(100); pNewSoldier->bPoisonAbsorption = 200 + Random(100);
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
memcpy( &(pNewSoldier->name), &(pCorpse->name), sizeof(CHAR16) * 10 ); if ( !memcmp( pCorpse->name, TacticalStr[ CIV_TEAM_MINER_NAME ], sizeof(pCorpse->name) )
pNewSoldier->name[9] = '\0'; || !memcmp( pCorpse->name, TacticalStr[ MILITIA_TEAM_MERC_NAME ], sizeof(pCorpse->name) )
|| !memcmp( pCorpse->name, TacticalStr[ CREATURE_TEAM_MERC_NAME ], sizeof(pCorpse->name) )
|| !memcmp( pCorpse->name, TacticalStr[ CIV_TEAM_MERC_NAME ], sizeof(pCorpse->name) )
|| !memcmp( pCorpse->name, TacticalStr[ ZOMBIE_TEAM_MERC_NAME ], sizeof(pCorpse->name) )
|| !memcmp( pCorpse->name, TacticalStr[ ENEMY_TEAM_MERC_NAME ], sizeof(pCorpse->name) ) )
{
swprintf( pNewSoldier->name, TacticalStr[ ZOMBIE_TEAM_MERC_NAME ] );
}
else
{
memcpy( &(pNewSoldier->name), &(pCorpse->name), sizeof(CHAR16) * 10 );
pNewSoldier->name[9] = '\0';
}
// add skills according to difficulty level // add skills according to difficulty level
switch( gGameExternalOptions.sZombieDifficultyLevel ) switch( gGameExternalOptions.sZombieDifficultyLevel )
@@ -2369,6 +2382,65 @@ void CreateZombiefromCorpse( ROTTING_CORPSE * pCorpse, UINT16 usAnimState )
// Set a pending animation to change stance first... // Set a pending animation to change stance first...
//SendChangeSoldierStanceEvent( pNewSoldier, ANIM_CROUCH ); //SendChangeSoldierStanceEvent( pNewSoldier, ANIM_CROUCH );
// search for armour and equip if found
if ( gGameExternalOptions.fZombieRiseWithArmour )
{
BOOLEAN fHelmetFound = FALSE;
BOOLEAN fVestFound = FALSE;
BOOLEAN fPantsFound = FALSE;
ITEM_POOL * pItemPool, * pItemPoolNext;
GetItemPool( pCorpse->def.sGridNo, &pItemPool, pCorpse->def.bLevel );
while( pItemPool && ( !fHelmetFound || !fVestFound ||!fPantsFound ) )
{
pItemPoolNext = pItemPool->pNext;
OBJECTTYPE* pObj = &(gWorldItems[ pItemPool->iItemIndex ].object);
if ( Item[ pObj->usItem ].usItemClass == IC_ARMOUR )
{
switch (Armour[Item[pObj->usItem].ubClassIndex].ubArmourClass)
{
case ARMOURCLASS_HELMET:
{
if( !fHelmetFound && AutoPlaceObject(pNewSoldier, pObj, FALSE))
{
// remove item from the ground
RemoveItemFromPool( pCorpse->def.sGridNo, pItemPool->iItemIndex, pCorpse->def.bLevel );
fHelmetFound = TRUE;
}
break;
}
case ARMOURCLASS_VEST:
{
if( !fVestFound && AutoPlaceObject(pNewSoldier, pObj, FALSE))
{
// remove item from the ground
RemoveItemFromPool( pCorpse->def.sGridNo, pItemPool->iItemIndex, pCorpse->def.bLevel );
fVestFound = TRUE;
}
break;
}
case ARMOURCLASS_LEGGINGS:
{
if( !fPantsFound && AutoPlaceObject(pNewSoldier, pObj, FALSE))
{
// remove item from the ground
RemoveItemFromPool( pCorpse->def.sGridNo, pItemPool->iItemIndex, pCorpse->def.bLevel );
fPantsFound = TRUE;
}
break;
}
default:
break;
}
}
pItemPool = pItemPoolNext;
}
}
// Change to standing,unless we can getup with an animation // Change to standing,unless we can getup with an animation
pNewSoldier->EVENT_InitNewSoldierAnim( STANDING, 0, TRUE ); pNewSoldier->EVENT_InitNewSoldierAnim( STANDING, 0, TRUE );
+38 -20
View File
@@ -18,7 +18,7 @@
#include "Soldier Control.h" #include "Soldier Control.h"
#endif #endif
INT8 EffectiveStrength( SOLDIERTYPE *pSoldier) INT16 EffectiveStrength( SOLDIERTYPE *pSoldier, BOOLEAN fTrainer )
{ {
INT8 bBandaged; INT8 bBandaged;
INT32 iEffStrength; INT32 iEffStrength;
@@ -30,8 +30,16 @@ INT8 EffectiveStrength( SOLDIERTYPE *pSoldier)
if (pSoldier->stats.bStrength > 0) if (pSoldier->stats.bStrength > 0)
{ {
iEffStrength = ( pSoldier->stats.bStrength )/ 2; if ( fTrainer )
iEffStrength += ( (pSoldier->stats.bStrength ) / 2) * (pSoldier->stats.bLife + bBandaged / 2) / (pSoldier->stats.bLifeMax); {
iEffStrength = pSoldier->stats.bStrength / 2;
iEffStrength += ( pSoldier->stats.bStrength / 2) * (pSoldier->stats.bLife + bBandaged / 2) / (pSoldier->stats.bLifeMax);
}
else
{
iEffStrength = ( pSoldier->stats.bStrength + pSoldier->bExtraStrength )/ 2;
iEffStrength += ( (pSoldier->stats.bStrength + pSoldier->bExtraStrength) / 2) * (pSoldier->stats.bLife + bBandaged / 2) / (pSoldier->stats.bLifeMax);
}
} }
else else
{ {
@@ -41,27 +49,32 @@ INT8 EffectiveStrength( SOLDIERTYPE *pSoldier)
// ATE: Make sure at least 2... // ATE: Make sure at least 2...
iEffStrength = __max( iEffStrength, 2 ); iEffStrength = __max( iEffStrength, 2 );
return( (INT8) iEffStrength ); return( (INT16) iEffStrength );
} }
INT8 EffectiveWisdom( SOLDIERTYPE * pSoldier ) INT16 EffectiveWisdom( SOLDIERTYPE * pSoldier)
{ {
INT32 iEffWisdom; INT32 iEffWisdom;
iEffWisdom = pSoldier->stats.bWisdom; iEffWisdom = pSoldier->stats.bWisdom;
iEffWisdom += pSoldier->bExtraWisdom;
iEffWisdom = EffectStatForBeingDrunk( pSoldier, iEffWisdom ); iEffWisdom = EffectStatForBeingDrunk( pSoldier, iEffWisdom );
return( (INT8) iEffWisdom ); return( (INT16) iEffWisdom );
} }
INT8 EffectiveAgility( SOLDIERTYPE * pSoldier ) INT16 EffectiveAgility( SOLDIERTYPE * pSoldier, BOOLEAN fTrainer )
{ {
INT32 iEffAgility; INT32 iEffAgility;
iEffAgility = pSoldier->stats.bAgility; iEffAgility = pSoldier->stats.bAgility;
if ( !fTrainer )
iEffAgility += pSoldier->bExtraAgility;
iEffAgility = EffectStatForBeingDrunk( pSoldier, iEffAgility ); iEffAgility = EffectStatForBeingDrunk( pSoldier, iEffAgility );
if ( pSoldier->sWeightCarriedAtTurnStart > 100 ) if ( pSoldier->sWeightCarriedAtTurnStart > 100 )
@@ -69,7 +82,7 @@ INT8 EffectiveAgility( SOLDIERTYPE * pSoldier )
iEffAgility = (iEffAgility * 100) / pSoldier->sWeightCarriedAtTurnStart; iEffAgility = (iEffAgility * 100) / pSoldier->sWeightCarriedAtTurnStart;
} }
return( (INT8) iEffAgility ); return( (INT16) iEffAgility );
} }
@@ -165,6 +178,8 @@ INT8 EffectiveExpLevel( SOLDIERTYPE * pSoldier )
} }
} }
iEffExpLevel += pSoldier->bExtraExpLevel;
if (iEffExpLevel > 10) if (iEffExpLevel > 10)
{ {
// can't go over 10 - SANDRO // can't go over 10 - SANDRO
@@ -192,15 +207,18 @@ INT8 EffectiveMarksmanship( SOLDIERTYPE * pSoldier )
return( (INT8) iEffMarksmanship ); return( (INT8) iEffMarksmanship );
} }
INT8 EffectiveDexterity( SOLDIERTYPE * pSoldier ) INT16 EffectiveDexterity( SOLDIERTYPE * pSoldier, BOOLEAN fTrainer )
{ {
INT32 iEffDexterity; INT32 iEffDexterity;
iEffDexterity = pSoldier->stats.bDexterity; iEffDexterity = pSoldier->stats.bDexterity;
if ( !fTrainer )
iEffDexterity += pSoldier->bExtraDexterity;
iEffDexterity = EffectStatForBeingDrunk( pSoldier, iEffDexterity ); iEffDexterity = EffectStatForBeingDrunk( pSoldier, iEffDexterity );
return( (INT8) iEffDexterity ); return( (INT16) iEffDexterity );
} }
@@ -220,7 +238,7 @@ UINT8 GetPenaltyForFatigue( SOLDIERTYPE *pSoldier )
return( ubPercentPenalty ); return( ubPercentPenalty );
} }
void ReducePointsForFatigue( SOLDIERTYPE *pSoldier, UINT16 *pusPoints ) void ReducePointsForFatigue( SOLDIERTYPE *pSoldier, UINT32 *pusPoints )
{ {
*pusPoints -= (*pusPoints * GetPenaltyForFatigue( pSoldier )) / 100; *pusPoints -= (*pusPoints * GetPenaltyForFatigue( pSoldier )) / 100;
} }
@@ -259,7 +277,7 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
// adjust skill based on wisdom (knowledge) // adjust skill based on wisdom (knowledge)
iSkill = iSkill * (EffectiveWisdom( pSoldier ) + 100) / 200; iSkill = iSkill * (EffectiveWisdom( pSoldier ) + 100) / 200;
// and dexterity (clumsy?) // and dexterity (clumsy?)
iSkill = iSkill * (EffectiveDexterity( pSoldier ) + 100) / 200; iSkill = iSkill * (EffectiveDexterity( pSoldier, FALSE ) + 100) / 200;
// factor in experience // factor in experience
iSkill = iSkill + EffectiveExpLevel( pSoldier ) * 3; iSkill = iSkill + EffectiveExpLevel( pSoldier ) * 3;
@@ -310,7 +328,7 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
{ {
break; break;
} }
iSkill = (iSkill * 3 + EffectiveDexterity( pSoldier ) ) / 4; iSkill = (iSkill * 3 + EffectiveDexterity( pSoldier, FALSE ) ) / 4;
// SANDRO - STOMP traits - Demolitions trait detonator attaching bonus // SANDRO - STOMP traits - Demolitions trait detonator attaching bonus
if ( gGameOptions.fNewTraitSystem ) if ( gGameOptions.fNewTraitSystem )
@@ -401,7 +419,7 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
} }
} }
iSkill += EffectiveDexterity( pSoldier ) * 2; iSkill += EffectiveDexterity( pSoldier, FALSE ) * 2;
iSkill += EffectiveExpLevel( pSoldier ) * 10; iSkill += EffectiveExpLevel( pSoldier ) * 10;
iSkill = iSkill / 10; // bring the value down to a percentage iSkill = iSkill / 10; // bring the value down to a percentage
@@ -445,7 +463,7 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
break; break;
} }
} }
iSkill += EffectiveDexterity( pSoldier ) * 2; iSkill += EffectiveDexterity( pSoldier, FALSE ) * 2;
iSkill += EffectiveExpLevel( pSoldier ) * 10; iSkill += EffectiveExpLevel( pSoldier ) * 10;
iSkill = iSkill / 10; // bring the value down to a percentage iSkill = iSkill / 10; // bring the value down to a percentage
// penalty based on poor wisdom // penalty based on poor wisdom
@@ -475,12 +493,12 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
case OPEN_WITH_CROWBAR: case OPEN_WITH_CROWBAR:
// Add for crowbar... // Add for crowbar...
iSkill = EffectiveStrength( pSoldier ) + 20; iSkill = EffectiveStrength( pSoldier, FALSE ) + 20;
fForceDamnSound = TRUE; fForceDamnSound = TRUE;
break; break;
case SMASH_DOOR_CHECK: case SMASH_DOOR_CHECK:
iSkill = EffectiveStrength( pSoldier ); iSkill = EffectiveStrength( pSoldier, FALSE );
// SANDRO - STOMP traits - Martial Arts trait kick doors bonus // SANDRO - STOMP traits - Martial Arts trait kick doors bonus
if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, MARTIAL_ARTS_NT )) if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, MARTIAL_ARTS_NT ))
{ {
@@ -519,7 +537,7 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
// adjust skill based on wisdom (knowledge) // adjust skill based on wisdom (knowledge)
iSkill = iSkill * (EffectiveWisdom( pSoldier ) + 100) / 200; iSkill = iSkill * (EffectiveWisdom( pSoldier ) + 100) / 200;
// and dexterity (clumsy?) // and dexterity (clumsy?)
iSkill = iSkill * (EffectiveDexterity( pSoldier ) + 100) / 200; iSkill = iSkill * (EffectiveDexterity( pSoldier, FALSE ) + 100) / 200;
// factor in experience // factor in experience
iSkill = iSkill + EffectiveExpLevel( pSoldier ) * 3; iSkill = iSkill + EffectiveExpLevel( pSoldier ) * 3;
@@ -777,11 +795,11 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
} }
INT8 CalcTrapDetectLevel( SOLDIERTYPE * pSoldier, BOOLEAN fExamining ) INT16 CalcTrapDetectLevel( SOLDIERTYPE * pSoldier, BOOLEAN fExamining )
{ {
// return the level of trap which the guy is able to detect // return the level of trap which the guy is able to detect
INT8 bDetectLevel; INT16 bDetectLevel;
// formula: 1 pt for every exp_level // formula: 1 pt for every exp_level
// plus 1 pt for every 40 explosives // plus 1 pt for every 40 explosives
+6 -6
View File
@@ -5,20 +5,20 @@
#include "types.h" #include "types.h"
#include "Soldier Control.h" #include "Soldier Control.h"
extern void ReducePointsForFatigue( SOLDIERTYPE *pSoldier, UINT16 *pusPoints ); extern void ReducePointsForFatigue( SOLDIERTYPE *pSoldier, UINT32 *pusPoints );
extern INT32 GetSkillCheckPenaltyForFatigue( SOLDIERTYPE *pSoldier, INT32 iSkill ); extern INT32 GetSkillCheckPenaltyForFatigue( SOLDIERTYPE *pSoldier, INT32 iSkill );
extern INT32 SkillCheck( SOLDIERTYPE *pSoldier, INT8 bReason, INT8 bDifficulty ); extern INT32 SkillCheck( SOLDIERTYPE *pSoldier, INT8 bReason, INT8 bDifficulty );
extern INT8 CalcTrapDetectLevel( SOLDIERTYPE *pSoldier, BOOLEAN fExamining ); extern INT16 CalcTrapDetectLevel( SOLDIERTYPE *pSoldier, BOOLEAN fExamining );
extern INT8 EffectiveStrength( SOLDIERTYPE *pSoldier ); extern INT16 EffectiveStrength( SOLDIERTYPE *pSoldier, BOOLEAN fTrainer );
extern INT8 EffectiveWisdom( SOLDIERTYPE *pSoldier ); extern INT16 EffectiveWisdom( SOLDIERTYPE *pSoldier );
extern INT8 EffectiveAgility( SOLDIERTYPE *pSoldier ); extern INT16 EffectiveAgility( SOLDIERTYPE *pSoldier, BOOLEAN fTrainer );
extern INT8 EffectiveMechanical( SOLDIERTYPE *pSoldier ); extern INT8 EffectiveMechanical( SOLDIERTYPE *pSoldier );
extern INT8 EffectiveExplosive( SOLDIERTYPE *pSoldier ); extern INT8 EffectiveExplosive( SOLDIERTYPE *pSoldier );
extern INT8 EffectiveLeadership( SOLDIERTYPE *pSoldier ); extern INT8 EffectiveLeadership( SOLDIERTYPE *pSoldier );
extern INT8 EffectiveMarksmanship( SOLDIERTYPE *pSoldier ); extern INT8 EffectiveMarksmanship( SOLDIERTYPE *pSoldier );
extern INT8 EffectiveDexterity( SOLDIERTYPE *pSoldier ); extern INT16 EffectiveDexterity( SOLDIERTYPE *pSoldier, BOOLEAN fTrainer );
extern INT8 EffectiveExpLevel( SOLDIERTYPE *pSoldier ); extern INT8 EffectiveExpLevel( SOLDIERTYPE *pSoldier );
extern INT8 EffectiveMedical( SOLDIERTYPE *pSoldier ); extern INT8 EffectiveMedical( SOLDIERTYPE *pSoldier );
+21 -8
View File
@@ -1914,9 +1914,9 @@ INT16 SOLDIERTYPE::CalcActionPoints( void )
// 2 * this->stats.bLifeMax + // 2 * this->stats.bLifeMax +
// 2 * EffectiveDexterity( this ) ) + 20) / 40); // 2 * EffectiveDexterity( this ) ) + 20) / 40);
ubPoints = 20 + (((10 * EffectiveExpLevel( this ) + ubPoints = 20 + (((10 * EffectiveExpLevel( this ) +
3 * EffectiveAgility( this ) + 3 * EffectiveAgility( this, FALSE ) +
2 * this->stats.bLifeMax + 2 * this->stats.bLifeMax +
2 * EffectiveDexterity( this ) ) + 5) / 10); 2 * EffectiveDexterity( this, FALSE ) ) + 5) / 10);
//if (GameOption[INCREASEDAP] % 2 == 1) //if (GameOption[INCREASEDAP] % 2 == 1)
//points += APBPConstants[AP_INCREASE]; //points += APBPConstants[AP_INCREASE];
@@ -7063,6 +7063,9 @@ void SOLDIERTYPE::EVENT_BeginMercTurn( BOOLEAN fFromRealTime, INT32 iRealTimeCou
this->aiData.bUnderFire--; this->aiData.bUnderFire--;
} }
// Flugente: reset extra stats. Currently they only depend on drug effects, and those are reset every turn
this->ResetExtraStats();
// ATE: Add decay effect sfor drugs... // ATE: Add decay effect sfor drugs...
if ( fFromRealTime ) //&& iRealTimeCounter % 300 ) if ( fFromRealTime ) //&& iRealTimeCounter % 300 )
{ {
@@ -8085,7 +8088,8 @@ void CalculateSoldierAniSpeed( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pStatsSoldier
UINT32 uiTerrainDelay; UINT32 uiTerrainDelay;
UINT32 uiSpeed = 0; UINT32 uiSpeed = 0;
INT8 bBreathDef, bLifeDef, bAgilDef; INT8 bBreathDef, bLifeDef;
INT16 bAgilDef;
INT8 bAdditional = 0; INT8 bAdditional = 0;
// for those animations which have a speed of zero, we have to calculate it // for those animations which have a speed of zero, we have to calculate it
@@ -8208,7 +8212,7 @@ void CalculateSoldierAniSpeed( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pStatsSoldier
if ( bBreathDef > 30 ) if ( bBreathDef > 30 )
bBreathDef = 30; bBreathDef = 30;
bAgilDef = 50 - ( EffectiveAgility( pStatsSoldier ) / 4 ); bAgilDef = 50 - ( EffectiveAgility( pStatsSoldier, FALSE ) / 4 );
bLifeDef = 50 - ( pStatsSoldier->stats.bLife / 2 ); bLifeDef = 50 - ( pStatsSoldier->stats.bLife / 2 );
uiTerrainDelay += ( bLifeDef + bBreathDef + bAgilDef + bAdditional ); uiTerrainDelay += ( bLifeDef + bBreathDef + bAgilDef + bAdditional );
@@ -8833,7 +8837,7 @@ UINT32 SleepDartSuccumbChance( SOLDIERTYPE * pSoldier )
INT16 bEffectiveStrength; INT16 bEffectiveStrength;
// figure out base chance of succumbing, // figure out base chance of succumbing,
bEffectiveStrength = EffectiveStrength( pSoldier ); bEffectiveStrength = EffectiveStrength( pSoldier, TRUE );
if (bEffectiveStrength > 90) if (bEffectiveStrength > 90)
{ {
@@ -9428,7 +9432,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sPo
INT16 sTestOne, sTestTwo, sChanceToDrop; INT16 sTestOne, sTestTwo, sChanceToDrop;
INT8 bVisible = -1; INT8 bVisible = -1;
sTestOne = EffectiveStrength( this ); sTestOne = EffectiveStrength( this, FALSE );
sTestTwo = ( 2 * ( __max( sLifeDeduct, ( sBreathLoss / 100 ) ) ) ); sTestTwo = ( 2 * ( __max( sLifeDeduct, ( sBreathLoss / 100 ) ) ) );
@@ -11894,14 +11898,14 @@ UINT32 SOLDIERTYPE::SoldierDressWound( SOLDIERTYPE *pVictim, INT16 sKitPts, INT1
uiDressSkill = ( ( 7 * EffectiveMedical( this ) ) + // medical knowledge uiDressSkill = ( ( 7 * EffectiveMedical( this ) ) + // medical knowledge
( sStatus) + // state of medical kit ( sStatus) + // state of medical kit
(10 * EffectiveExpLevel( this ) ) + // battle injury experience (10 * EffectiveExpLevel( this ) ) + // battle injury experience
EffectiveDexterity( this ) ) / 10; // general "handiness" EffectiveDexterity( this, FALSE ) ) / 10; // general "handiness"
} }
else else
{ {
uiDressSkill = ( ( 3 * EffectiveMedical( this ) ) + // medical knowledge uiDressSkill = ( ( 3 * EffectiveMedical( this ) ) + // medical knowledge
( 2 * sStatus) + // state of medical kit ( 2 * sStatus) + // state of medical kit
(10 * EffectiveExpLevel( this ) ) + // battle injury experience (10 * EffectiveExpLevel( this ) ) + // battle injury experience
EffectiveDexterity( this ) ) / 7; // general "handiness" EffectiveDexterity( this, FALSE ) ) / 7; // general "handiness"
} }
// try to use every AP that the merc has left // try to use every AP that the merc has left
@@ -13494,6 +13498,15 @@ INT16 SOLDIERTYPE::GetPoisonDamagePercentage( void )
return( val ); return( val );
} }
// reset the extra stat variables
void SOLDIERTYPE::ResetExtraStats()
{
bExtraStrength = 0;
bExtraDexterity = 0;
bExtraAgility = 0;
bExtraWisdom = 0;
bExtraExpLevel = 0;
}
INT32 CheckBleeding( SOLDIERTYPE *pSoldier ) INT32 CheckBleeding( SOLDIERTYPE *pSoldier )
+12
View File
@@ -1158,6 +1158,15 @@ public:
INT16 bPoisonAbsorption; // for x points of poison damage received, you gain x * (bPoisonAbsorption / 100) poison life points INT16 bPoisonAbsorption; // for x points of poison damage received, you gain x * (bPoisonAbsorption / 100) poison life points
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
// Flugente: new variables for extra stats
INT16 bExtraStrength; // additional strength gained via power armor
INT16 bExtraDexterity; // additional dexterity gained via drugs
INT16 bExtraAgility; // additional agility gained via drugs
INT16 bExtraWisdom; // additional wisdom gained via drugs
INT8 bExtraExpLevel; // corruption can temporarily alter our ExpLevel without messing up our stats this way
INT32 bSoldierFlagMask; // for various soldier-related flags (Illusion, Kill streak, etc.). Easier than adding 32 bool variables
#ifdef JA2UB #ifdef JA2UB
//ja25 //ja25
@@ -1355,6 +1364,9 @@ public:
INT16 GetPoisonAbsorption( void ); INT16 GetPoisonAbsorption( void );
// returns the poison percentage of the damage we will be doing with the weapon currently in our hand // returns the poison percentage of the damage we will be doing with the weapon currently in our hand
INT16 GetPoisonDamagePercentage( void ); INT16 GetPoisonDamagePercentage( void );
// reset the extra stat variables
void ResetExtraStats();
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
}; // SOLDIERTYPE; }; // SOLDIERTYPE;
+2 -2
View File
@@ -1759,13 +1759,13 @@ INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN f
//iPoints = EffectiveExpLevel( MercPtrs[ pSoldier->ubRobotRemoteHolderID ] ) - 2; //iPoints = EffectiveExpLevel( MercPtrs[ pSoldier->ubRobotRemoteHolderID ] ) - 2;
// Snap: (do some proper rounding here) // Snap: (do some proper rounding here)
iPoints = ( 20*EffectiveExpLevel( MercPtrs[ pSoldier->ubRobotRemoteHolderID ] ) iPoints = ( 20*EffectiveExpLevel( MercPtrs[ pSoldier->ubRobotRemoteHolderID ] )
+ EffectiveAgility( MercPtrs[ pSoldier->ubRobotRemoteHolderID ] ) + 15 ) / 30 - 2; + EffectiveAgility( MercPtrs[ pSoldier->ubRobotRemoteHolderID ], FALSE ) + 15 ) / 30 - 2;
} }
else else
{ {
//iPoints = EffectiveExpLevel( pSoldier ); //iPoints = EffectiveExpLevel( pSoldier );
// Snap: // Snap:
iPoints = ( 20*EffectiveExpLevel( pSoldier ) + EffectiveAgility( pSoldier ) + 15 ) / 30; iPoints = ( 20*EffectiveExpLevel( pSoldier ) + EffectiveAgility( pSoldier, FALSE ) + 15 ) / 30;
/* /*
if ( pSoldier->bTeam == ENEMY_TEAM ) if ( pSoldier->bTeam == ENEMY_TEAM )
+34 -28
View File
@@ -4790,8 +4790,8 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
INT8 bExperience = EffectiveExpLevel( pSoldier ); INT8 bExperience = EffectiveExpLevel( pSoldier );
INT8 bMarksmanship = EffectiveMarksmanship( pSoldier ); INT8 bMarksmanship = EffectiveMarksmanship( pSoldier );
INT8 bDexterity = EffectiveDexterity( pSoldier );; INT16 bDexterity = EffectiveDexterity( pSoldier, FALSE );
INT8 bWisdom = EffectiveWisdom( pSoldier ); INT16 bWisdom = EffectiveWisdom( pSoldier );
if ( bMarksmanship == 0 || bDexterity == 0 ) if ( bMarksmanship == 0 || bDexterity == 0 )
{ {
@@ -6165,7 +6165,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
// Determine iMarksmanship and Base CTH // Determine iMarksmanship and Base CTH
if (Item[usItemUsed].rocketlauncher ){ if (Item[usItemUsed].rocketlauncher ){
// use the same calculation as for mechanical thrown weapons // use the same calculation as for mechanical thrown weapons
iMarksmanship = ( EffectiveDexterity( pSoldier ) + EffectiveMarksmanship( pSoldier ) + EffectiveWisdom( pSoldier ) + (10 * EffectiveExpLevel( pSoldier ) )) / 4; iMarksmanship = ( EffectiveDexterity( pSoldier, FALSE ) + EffectiveMarksmanship( pSoldier ) + EffectiveWisdom( pSoldier ) + (10 * EffectiveExpLevel( pSoldier ) )) / 4;
// heavy weapons trait helps out // heavy weapons trait helps out
if (HAS_SKILL_TRAIT( pSoldier, HEAVY_WEAPS_OT ) && !( gGameOptions.fNewTraitSystem )) // SANDRO - old/new traits if (HAS_SKILL_TRAIT( pSoldier, HEAVY_WEAPS_OT ) && !( gGameOptions.fNewTraitSystem )) // SANDRO - old/new traits
iMarksmanship += gbSkillTraitBonus[HEAVY_WEAPS_OT] * NUM_SKILL_TRAITS( pSoldier, HEAVY_WEAPS_OT ); iMarksmanship += gbSkillTraitBonus[HEAVY_WEAPS_OT] * NUM_SKILL_TRAITS( pSoldier, HEAVY_WEAPS_OT );
@@ -6326,7 +6326,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
// but ability to dodge is reduced if crouched or prone! // but ability to dodge is reduced if crouched or prone!
if (pTarget->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY && !TANK( pTarget ) && !(pSoldier->ubBodyType != QUEENMONSTER) ) if (pTarget->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY && !TANK( pTarget ) && !(pSoldier->ubBodyType != QUEENMONSTER) )
{ {
iPenalty = ( EffectiveAgility( pTarget ) / 5 + EffectiveExpLevel( pTarget ) * 2); iPenalty = ( EffectiveAgility( pTarget, FALSE ) / 5 + EffectiveExpLevel( pTarget ) * 2);
switch( gAnimControl[ pTarget->usAnimState ].ubHeight ) switch( gAnimControl[ pTarget->usAnimState ].ubHeight )
{ {
case ANIM_CROUCH: case ANIM_CROUCH:
@@ -6338,7 +6338,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
} }
// reduce dodge ability by the attacker's stats // reduce dodge ability by the attacker's stats
iBonus = ( EffectiveDexterity( pSoldier ) / 5 + EffectiveExpLevel( pSoldier ) * 2); iBonus = ( EffectiveDexterity( pSoldier, FALSE ) / 5 + EffectiveExpLevel( pSoldier ) * 2);
if ( TANK( pTarget ) || (pSoldier->ubBodyType != QUEENMONSTER) ) if ( TANK( pTarget ) || (pSoldier->ubBodyType != QUEENMONSTER) )
{ {
// reduce ability to track shots // reduce ability to track shots
@@ -6929,7 +6929,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
// breath penalty is based on % breath missing (max 1/2 chance) // breath penalty is based on % breath missing (max 1/2 chance)
iPenalty = (iChance * (100 - pSoldier->bBreath)) / 200; iPenalty = (iChance * (100 - pSoldier->bBreath)) / 200;
// reduce breath penalty due to merc's dexterity (he can compensate!) // reduce breath penalty due to merc's dexterity (he can compensate!)
iChance -= (iPenalty * (100 - ( EffectiveDexterity( pSoldier ) - 10))) / 100; iChance -= (iPenalty * (100 - ( EffectiveDexterity( pSoldier, FALSE ) - 10))) / 100;
} }
///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////
@@ -9227,7 +9227,7 @@ INT32 HTHImpact( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTarget, INT32 iHitBy, BO
iImpact += GetDamage(pObj); iImpact += GetDamage(pObj);
iImpact += EffectiveStrength( pSoldier ) / 20; // 0 to 5 for strength, adjusted by damage taken iImpact += EffectiveStrength( pSoldier, FALSE ) / 20; // 0 to 5 for strength, adjusted by damage taken
if ( AM_A_ROBOT( pTarget ) ) if ( AM_A_ROBOT( pTarget ) )
{ {
@@ -9237,7 +9237,7 @@ INT32 HTHImpact( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTarget, INT32 iHitBy, BO
else else
{ {
iImpact = ( EffectiveExpLevel( pSoldier ) / 2); // 0 to 4 for level iImpact = ( EffectiveExpLevel( pSoldier ) / 2); // 0 to 4 for level
iImpact += EffectiveStrength( pSoldier ) / 5; // 0 to 20 for strength, adjusted by damage taken iImpact += EffectiveStrength( pSoldier, FALSE ) / 5; // 0 to 20 for strength, adjusted by damage taken
// NB martial artists don't get a bonus for using brass knuckles! - oh, they do in STOMP - SANDRO // NB martial artists don't get a bonus for using brass knuckles! - oh, they do in STOMP - SANDRO
if (pSoldier->usAttackingWeapon ) if (pSoldier->usAttackingWeapon )
@@ -9550,26 +9550,29 @@ UINT32 CalcChanceHTH( SOLDIERTYPE * pAttacker,SOLDIERTYPE *pDefender, INT16 ubAi
if (gGameExternalOptions.fEnhancedCloseCombatSystem) if (gGameExternalOptions.fEnhancedCloseCombatSystem)
{ {
// We need to be agile and dexterous // We need to be agile and dexterous
iAttRating = ( 2 * EffectiveDexterity( pAttacker ) + // coordination, accuracy * iAttRating = ( 2 * EffectiveDexterity( pAttacker, FALSE ) + // coordination, accuracy *
2 * EffectiveAgility( pAttacker ) + // speed & reflexes 2 * EffectiveAgility( pAttacker, FALSE ) + // speed & reflexes
pAttacker->stats.bStrength + // physical strength pAttacker->stats.bStrength + // physical strength
pDefender->bExtraStrength + // additional strength from power armour
(10 * EffectiveExpLevel( pAttacker ) ) ); // experience, knowledge (10 * EffectiveExpLevel( pAttacker ) ) ); // experience, knowledge
} }
else else
{ {
// this is more of a brute force strength-vs-strength check // this is more of a brute force strength-vs-strength check
iAttRating = ( EffectiveDexterity( pAttacker ) + // coordination, accuracy iAttRating = ( EffectiveDexterity( pAttacker, FALSE ) + // coordination, accuracy
EffectiveAgility( pAttacker ) + // speed & reflexes EffectiveAgility( pAttacker, FALSE ) + // speed & reflexes
3 * pAttacker->stats.bStrength + // physical strength (TRIPLED!) 3 * pAttacker->stats.bStrength + // physical strength (TRIPLED!)
3 * pDefender->bExtraStrength + // additional strength from power armour
(10 * EffectiveExpLevel( pAttacker ) ) ); // experience, knowledge (10 * EffectiveExpLevel( pAttacker ) ) ); // experience, knowledge
} }
/////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////
} }
else else
{ {
iAttRating = (3 * EffectiveDexterity( pAttacker ) + // coordination, accuracy (TRIPLED!) iAttRating = (3 * EffectiveDexterity( pAttacker, FALSE ) + // coordination, accuracy (TRIPLED!)
EffectiveAgility( pAttacker ) + // speed & reflexes EffectiveAgility( pAttacker, FALSE ) + // speed & reflexes
pAttacker->stats.bStrength + // physical strength pAttacker->stats.bStrength + // physical strength
pDefender->bExtraStrength + // additional strength from power armour
(10 * EffectiveExpLevel( pAttacker ) ) ); // experience, knowledge (10 * EffectiveExpLevel( pAttacker ) ) ); // experience, knowledge
} }
@@ -9732,24 +9735,27 @@ UINT32 CalcChanceHTH( SOLDIERTYPE * pAttacker,SOLDIERTYPE *pDefender, INT16 ubAi
// SANDRO - Enhanced Close Combat System - stealing defence based on dexterity and strength // SANDRO - Enhanced Close Combat System - stealing defence based on dexterity and strength
if (gGameExternalOptions.fEnhancedCloseCombatSystem) if (gGameExternalOptions.fEnhancedCloseCombatSystem)
{ {
iDefRating = ( EffectiveAgility( pDefender )) + // speed & reflexes iDefRating = ( EffectiveAgility( pDefender, FALSE )) + // speed & reflexes
2 * EffectiveDexterity( pDefender ) + // coordination, accuracy 2 * EffectiveDexterity( pDefender, FALSE ) + // coordination, accuracy
2 * pDefender->stats.bStrength + // physical strength 2 * pDefender->stats.bStrength + // physical strength
2 * pDefender->bExtraStrength + // additional strength from power armour
(10 * EffectiveExpLevel( pDefender ) ); // experience, knowledge (10 * EffectiveExpLevel( pDefender ) ); // experience, knowledge
} }
else else
{ {
iDefRating = (EffectiveAgility( pDefender )) + // speed & reflexes iDefRating = (EffectiveAgility( pDefender, FALSE )) + // speed & reflexes
EffectiveDexterity( pDefender ) + // coordination, accuracy EffectiveDexterity( pDefender, FALSE ) + // coordination, accuracy
3 * pDefender->stats.bStrength + // physical strength (TRIPLED!) 3 * pDefender->stats.bStrength + // physical strength (TRIPLED!)
3 * pDefender->bExtraStrength + // additional strength from power armour
(10 * EffectiveExpLevel( pDefender ) ); // experience, knowledge (10 * EffectiveExpLevel( pDefender ) ); // experience, knowledge
} }
} }
else else
{ {
iDefRating = (3 * EffectiveAgility( pDefender ) ) + // speed & reflexes (TRIPLED!) iDefRating = (3 * EffectiveAgility( pDefender, FALSE ) ) + // speed & reflexes (TRIPLED!)
EffectiveDexterity( pDefender ) + // coordination, accuracy EffectiveDexterity( pDefender, FALSE ) + // coordination, accuracy
pDefender->stats.bStrength + // physical strength pDefender->stats.bStrength + // physical strength
pDefender->bExtraStrength + // additional strength from power armour
(10 * EffectiveExpLevel( pDefender ) ); // experience, knowledge (10 * EffectiveExpLevel( pDefender ) ); // experience, knowledge
} }
@@ -10346,13 +10352,13 @@ INT32 CalcMaxTossRange( SOLDIERTYPE * pSoldier, UINT16 usItem, BOOLEAN fArmed )
// start with the range based on the soldier's strength and the item's weight // start with the range based on the soldier's strength and the item's weight
// Altered by Digicrab on 14 March, 2004 // Altered by Digicrab on 14 March, 2004
// Reversed a Ja2Gold change that made grenades of weight 3 or more have the same throw distance as those of weight 3. // Reversed a Ja2Gold change that made grenades of weight 3 or more have the same throw distance as those of weight 3.
INT32 iThrowingStrength = ( EffectiveStrength( pSoldier ) * 2 + 100 ) / 3; INT32 iThrowingStrength = ( EffectiveStrength( pSoldier, FALSE ) * 2 + 100 ) / 3;
iRange = 2 + ( iThrowingStrength / (3 + (Item[usItem].ubWeight) / 3 )); iRange = 2 + ( iThrowingStrength / (3 + (Item[usItem].ubWeight) / 3 ));
} }
else else
{ // not as aerodynamic! { // not as aerodynamic!
// start with the range based on the soldier's strength and the item's weight // start with the range based on the soldier's strength and the item's weight
iRange = 2 + ( ( EffectiveStrength( pSoldier ) / ( 5 + Item[usItem].ubWeight) ) ); iRange = 2 + ( ( EffectiveStrength( pSoldier, FALSE ) / ( 5 + Item[usItem].ubWeight) ) );
} }
// adjust for thrower's remaining breath (lose up to 1/2 of range) // adjust for thrower's remaining breath (lose up to 1/2 of range)
@@ -10432,7 +10438,7 @@ UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
{ {
// PHYSICALLY THROWN arced projectile (ie. grenade) // PHYSICALLY THROWN arced projectile (ie. grenade)
// for lack of anything better, base throwing accuracy on dex & marskmanship // for lack of anything better, base throwing accuracy on dex & marskmanship
iChance = ( EffectiveDexterity( pSoldier ) + EffectiveMarksmanship( pSoldier ) ) / 2; iChance = ( EffectiveDexterity( pSoldier, FALSE ) + EffectiveMarksmanship( pSoldier ) ) / 2;
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - old/new traits // SANDRO - old/new traits
if ( gGameOptions.fNewTraitSystem ) if ( gGameOptions.fNewTraitSystem )
@@ -10464,7 +10470,7 @@ UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
{ {
// MECHANICALLY FIRED arced projectile (ie. mortar), need brains & know-how // MECHANICALLY FIRED arced projectile (ie. mortar), need brains & know-how
iChance = ( EffectiveDexterity( pSoldier ) + EffectiveMarksmanship( pSoldier ) + EffectiveWisdom( pSoldier ) + pSoldier->stats.bExpLevel ) / 4; iChance = ( EffectiveDexterity( pSoldier, FALSE ) + EffectiveMarksmanship( pSoldier ) + EffectiveWisdom( pSoldier ) + pSoldier->stats.bExpLevel ) / 4;
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - old/new traits // SANDRO - old/new traits
@@ -10646,7 +10652,7 @@ UINT32 CalcThrownChanceToHit(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
bPenalty /= 2; bPenalty /= 2;
// reduce breath penalty due to merc's dexterity (he can compensate!) // reduce breath penalty due to merc's dexterity (he can compensate!)
iChance -= (bPenalty * (100 - ( EffectiveDexterity( pSoldier ) - 10))) / 100; iChance -= (bPenalty * (100 - ( EffectiveDexterity( pSoldier, FALSE ) - 10))) / 100;
} }
// if iChance exists, but it's a mechanical item being used // if iChance exists, but it's a mechanical item being used
@@ -11085,8 +11091,8 @@ void EstimateBulletsLeft( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObj )
{ {
UINT16 usExpLevel; UINT16 usExpLevel;
UINT16 usDexterity; UINT32 usDexterity;
UINT16 usWisdom; UINT32 usWisdom;
UINT16 ubMagSize = Weapon[pObj->usItem].ubMagSize; UINT16 ubMagSize = Weapon[pObj->usItem].ubMagSize;
UINT16 usRealBulletCount = (*pObj)[0]->data.gun.ubGunShotsLeft; UINT16 usRealBulletCount = (*pObj)[0]->data.gun.ubGunShotsLeft;
UINT16 i = 0; UINT16 i = 0;
@@ -11103,7 +11109,7 @@ void EstimateBulletsLeft( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObj )
} }
usExpLevel = EffectiveExpLevel(pSoldier); usExpLevel = EffectiveExpLevel(pSoldier);
usDexterity = EffectiveDexterity(pSoldier); usDexterity = EffectiveDexterity(pSoldier, FALSE);
usWisdom = EffectiveWisdom(pSoldier); usWisdom = EffectiveWisdom(pSoldier);
if ( gGameExternalOptions.usBulletHideIntensity <= 0 ) if ( gGameExternalOptions.usBulletHideIntensity <= 0 )
+3 -3
View File
@@ -3969,13 +3969,13 @@ void DebugSoldierPage1( )
SetFontShade(LARGEFONT1, FONT_SHADE_GREEN); SetFontShade(LARGEFONT1, FONT_SHADE_GREEN);
gprintf( 200, LINE_HEIGHT * ubLine, L"Agility:"); gprintf( 200, LINE_HEIGHT * ubLine, L"Agility:");
SetFontShade(LARGEFONT1, FONT_SHADE_NEUTRAL); SetFontShade(LARGEFONT1, FONT_SHADE_NEUTRAL);
gprintf( 350, LINE_HEIGHT * ubLine, L"%d ( %d )", pSoldier->stats.bAgility, EffectiveAgility( pSoldier ) ); gprintf( 350, LINE_HEIGHT * ubLine, L"%d ( %d )", pSoldier->stats.bAgility, EffectiveAgility( pSoldier, FALSE ) );
ubLine++; ubLine++;
SetFontShade(LARGEFONT1, FONT_SHADE_GREEN); SetFontShade(LARGEFONT1, FONT_SHADE_GREEN);
gprintf( 200, LINE_HEIGHT * ubLine, L"Dexterity:"); gprintf( 200, LINE_HEIGHT * ubLine, L"Dexterity:");
SetFontShade(LARGEFONT1, FONT_SHADE_NEUTRAL); SetFontShade(LARGEFONT1, FONT_SHADE_NEUTRAL);
gprintf( 350, LINE_HEIGHT * ubLine, L"%d( %d )", pSoldier->stats.bDexterity, EffectiveDexterity( pSoldier ) ); gprintf( 350, LINE_HEIGHT * ubLine, L"%d( %d )", pSoldier->stats.bDexterity, EffectiveDexterity( pSoldier, FALSE ) );
ubLine++; ubLine++;
SetFontShade(LARGEFONT1, FONT_SHADE_GREEN); SetFontShade(LARGEFONT1, FONT_SHADE_GREEN);
@@ -5235,7 +5235,7 @@ UINT8 MovementNoise( SOLDIERTYPE *pSoldier )
// CHANGED BY SANDRO - LET'S MAKE THE STEALTH BASED ON AGILITY LIKE IT SHOULD BE // CHANGED BY SANDRO - LET'S MAKE THE STEALTH BASED ON AGILITY LIKE IT SHOULD BE
//iStealthSkill = 20 + 4 * EffectiveExpLevel( pSoldier ) + ((EffectiveDexterity( pSoldier ) * 4) / 10); // 24-100 //iStealthSkill = 20 + 4 * EffectiveExpLevel( pSoldier ) + ((EffectiveDexterity( pSoldier ) * 4) / 10); // 24-100
iStealthSkill = 20 + 4 * EffectiveExpLevel( pSoldier ) + ((EffectiveAgility( pSoldier ) * 4) / 10); // 24-100 iStealthSkill = 20 + 4 * EffectiveExpLevel( pSoldier ) + ((EffectiveAgility( pSoldier, FALSE ) * 4) / 10); // 24-100
// big bonus for those "extra stealthy" mercs // big bonus for those "extra stealthy" mercs
if ( pSoldier->ubBodyType == BLOODCAT ) if ( pSoldier->ubBodyType == BLOODCAT )
+3 -3
View File
@@ -1873,14 +1873,14 @@ INT32 EstimateStabDamage( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent,
if (fBladeAttack) if (fBladeAttack)
{ {
iImpact = GetDamage(&pSoldier->inv[HANDPOS]); iImpact = GetDamage(&pSoldier->inv[HANDPOS]);
iImpact += EffectiveStrength( pSoldier ) / 20; // 0 to 5 for strength, adjusted by damage taken iImpact += EffectiveStrength( pSoldier, FALSE ) / 20; // 0 to 5 for strength, adjusted by damage taken
} }
else else
{ {
// this all was a little changed for enhanced close combat system - SANDRO // this all was a little changed for enhanced close combat system - SANDRO
if ( gGameExternalOptions.fEnhancedCloseCombatSystem ) if ( gGameExternalOptions.fEnhancedCloseCombatSystem )
{ {
iImpact = EffectiveStrength( pSoldier ) / 5; // 0 to 20 for strength, adjusted by damage taken iImpact = EffectiveStrength( pSoldier, FALSE ) / 5; // 0 to 20 for strength, adjusted by damage taken
if ( pSoldier->usAttackingWeapon ) if ( pSoldier->usAttackingWeapon )
{ {
@@ -1909,7 +1909,7 @@ INT32 EstimateStabDamage( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent,
// base HTH damage // base HTH damage
iImpact = 5; iImpact = 5;
} }
iImpact += EffectiveStrength( pSoldier ) / 5; // 0 to 20 for strength, adjusted by damage taken iImpact += EffectiveStrength( pSoldier, FALSE ) / 5; // 0 to 20 for strength, adjusted by damage taken
} }
} }
+1 -1
View File
@@ -755,7 +755,7 @@ INT32 CalcThreateningEffectiveness( UINT8 ubMerc )
return( 0 ); return( 0 );
} }
iStrength = EffectiveStrength( pSoldier ); iStrength = EffectiveStrength( pSoldier, TRUE );
if ( Item[ pSoldier->inv[HANDPOS].usItem ].usItemClass & IC_WEAPON ) if ( Item[ pSoldier->inv[HANDPOS].usItem ].usItemClass & IC_WEAPON )
{ {
+1 -1
View File
@@ -2480,7 +2480,7 @@ BOOLEAN AttemptToCatchObject( REAL_OBJECT *pObject )
// OK, get chance to catch // OK, get chance to catch
// base it on...? CC? Dexterity? // base it on...? CC? Dexterity?
ubChanceToCatch = 50 + EffectiveDexterity( pSoldier ) / 2; ubChanceToCatch = 50 + EffectiveDexterity( pSoldier, FALSE ) / 2;
#ifdef JA2TESTVERSION #ifdef JA2TESTVERSION
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"Chance To Catch: %d", ubChanceToCatch ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"Chance To Catch: %d", ubChanceToCatch );
+2 -6
View File
@@ -5098,13 +5098,11 @@ STR16 zOptionsToggleText[] =
L"允许显示敌军装备", // Show Soldier Tooltips L"允许显示敌军装备", // Show Soldier Tooltips
L"自动存盘", //"Auto save", L"自动存盘", //"Auto save",
L"沉默的Skyrider", //"Silent Skyrider", L"沉默的Skyrider", //"Silent Skyrider",
//L"降低CPU的使用率", //"Low CPU usage",
L"增强属性框(EDB)", //L"Enhanced Description Box", L"增强属性框(EDB)", //L"Enhanced Description Box",
L"强制回合制模式", // add forced turn mode L"强制回合制模式", // add forced turn mode
L"属性进度条", //L"Stat Progress Bars", // Show progress towards stat increase //ham3.6 L"属性进度条", //L"Stat Progress Bars", // Show progress towards stat increase //ham3.6
L"替代战略地图颜色", // Change color scheme of Strategic Map L"替代战略地图颜色", // Change color scheme of Strategic Map
L"替代子弹图像", // Show alternate bullet graphics (tracers) L"替代子弹图像", // Show alternate bullet graphics (tracers)
//L"开启新的瞄准系统(NCTH)", // use NCTH
L"显示佣兵军衔", // shows mercs ranks L"显示佣兵军衔", // shows mercs ranks
L"显示脸部装备图", L"显示脸部装备图",
L"显示脸部装备图标", L"显示脸部装备图标",
@@ -5114,7 +5112,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate
L"自动加速敌军回合", // Automatic fast forward through AI turns L"自动加速敌军回合", // Automatic fast forward through AI turns
L"Allow Zombies", // TODO.Translate L"Allow Zombies", // TODO.Translate
//L"武器过热",
L"--作弊模式选项--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--作弊模式选项--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"强制 Bobby Ray 送货", // force all pending Bobby Ray shipments L"强制 Bobby Ray 送货", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5210,21 +5207,20 @@ STR16 zOptionsScreenHelpText[] =
L"打开时,把光标定位在敌人身上并且按下 |A|l|t 键会显示敌兵装备信息窗口。", L"打开时,把光标定位在敌人身上并且按下 |A|l|t 键会显示敌兵装备信息窗口。",
L"打开时,游戏将在玩家回合后自动存盘", L"打开时,游戏将在玩家回合后自动存盘",
L"打开时,Skyrider保持沉默。", L"打开时,Skyrider保持沉默。",
//L"打开时,游戏将使用更少的CPU资源。",
L"打开时,使用物品及武器的“增强描述框”(EDB)。", L"打开时,使用物品及武器的“增强描述框”(EDB)。",
L"打开时,在战术画面内存在敌军时,将一直处于回合制模式直至该地区所有敌军被消灭(可以通过快捷键 |C|T|R|L+|S|H|I|F|T+|A|L|T+|T 来控制打开或关闭强制回合制模式)", L"打开时,在战术画面内存在敌军时,将一直处于回合制模式直至该地区所有敌军被消灭(可以通过快捷键 |C|T|R|L+|S|H|I|F|T+|A|L|T+|T 来控制打开或关闭强制回合制模式)",
L"打开时,显示各属性的增长进度。", // L"When ON, shows character progress towards gaining levels.", //ham3.6 L"打开时,显示各属性的增长进度。", // L"When ON, shows character progress towards gaining levels.", //ham3.6
L"打开时, 战略地图将会根据探索状态显示不同的着色。", L"打开时, 战略地图将会根据探索状态显示不同的着色。",
L"打开时, 当你射击时会显示间隔子弹图像。", L"打开时, 当你射击时会显示间隔子弹图像。",
//L"打开时, 使用新命中率系统(NCTH)和光标。",
L"打开时,在战略界面的佣兵名旁显示军衔。", L"打开时,在战略界面的佣兵名旁显示军衔。",
L"打开时, 显示佣兵脸部装备图。", L"打开时, 显示佣兵脸部装备图。",
L"打开时, 佣兵肖像右下角显示脸部装备图标", L"打开时, 佣兵肖像右下角显示脸部装备图标",
L"打开时,在交换位置和其它动作时光标不切换。键入 |x 可以快速切换。", L"打开时,在交换位置和其它动作时光标不切换。键入 |x 可以快速切换。",
L"When ON, mercs will not report progress during training.", //TODO.Translate L"When ON, mercs will not report progress during training.", //TODO.Translate
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"打开时,敌军回合将被大幅加速。", L"打开时,敌军回合将被大幅加速。",
L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
//L"打开时,武器连续射击时温度逐渐升高引起过热。",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"强制 Bobby Ray 出货", L"强制 Bobby Ray 出货",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
+2 -6
View File
@@ -5097,13 +5097,11 @@ STR16 zOptionsToggleText[] =
L"Show Soldier Tooltips", L"Show Soldier Tooltips",
L"Auto save", L"Auto save",
L"Silent Skyrider", L"Silent Skyrider",
//L"Low CPU Usage",
L"Enhanced Description Box", L"Enhanced Description Box",
L"Forced Turn Mode", // add forced turn mode L"Forced Turn Mode", // add forced turn mode
L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate
L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map
L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate
//L"Activate New CTH system", // use NCTH
L"Show Merc Ranks", // shows mercs ranks // TODO.Translate L"Show Merc Ranks", // shows mercs ranks // TODO.Translate
L"Show Face gear graphics", // TODO.Translate L"Show Face gear graphics", // TODO.Translate
L"Show Face gear icons", L"Show Face gear icons",
@@ -5113,7 +5111,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate
L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate
L"Allow Zombies", // TODO.Translate L"Allow Zombies", // TODO.Translate
//L"Weapons Overheating", // TODO.Translate
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5209,21 +5206,20 @@ STR16 zOptionsScreenHelpText[] =
L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.",
L"When ON, game will be saved in 2 alternate save slots after each players turn.", L"When ON, game will be saved in 2 alternate save slots after each players turn.",
L"When ON, Skyrider will not talk anymore.", L"When ON, Skyrider will not talk anymore.",
//L"When ON, game will run with much lower CPU usage.",
L"When ON, enhanced descriptions will be shown for items and weapons.", L"When ON, enhanced descriptions will be shown for items and weapons.",
L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode
L"When ON, shows character progress towards gaining levels.", // TODO.Translate L"When ON, shows character progress towards gaining levels.", // TODO.Translate
L"When ON, the Strategic Map will be colored differently based on exploration.", L"When ON, the Strategic Map will be colored differently based on exploration.",
L"When ON, alternate bullet graphics will be shown when you shoot.", // TODO.Translate L"When ON, alternate bullet graphics will be shown when you shoot.", // TODO.Translate
//L"When ON, New CTH system and cursor is used.",
L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate
L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate
L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.", L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.",
L"Wanneer ingeschakeld, zal de cursor niet te schakelen tussen uitwisseling positie en andere acties. Druk op |x om snelle uitwisseling te starten.", L"Wanneer ingeschakeld, zal de cursor niet te schakelen tussen uitwisseling positie en andere acties. Druk op |x om snelle uitwisseling te starten.",
L"When ON, mercs will not report progress during training.", //TODO.Translate L"When ON, mercs will not report progress during training.", //TODO.Translate
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"When ON, AI turns will be much faster.", // TODO.Translate L"When ON, AI turns will be much faster.", // TODO.Translate
L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
//L"When ON, weapons can be overheated when firing.", // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Force all pending Bobby Ray shipments", L"Force all pending Bobby Ray shipments",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
+4 -8
View File
@@ -5096,13 +5096,11 @@ STR16 zOptionsToggleText[] =
L"Show Soldier Tooltips", L"Show Soldier Tooltips",
L"Tactical End-Turn Save", L"Tactical End-Turn Save",
L"Silent Skyrider", L"Silent Skyrider",
//L"Low CPU usage",
L"Enhanced Description Box", L"Enhanced Description Box",
L"Forced Turn Mode", // add forced turn mode L"Forced Turn Mode", // add forced turn mode
L"Stat Progress Bars", // Show progress towards stat increase L"Stat Progress Bars", // Show progress towards stat increase
L"Alternate Strategy Map Colors", // Change color scheme of Strategic Map L"Alternate Strategy Map Colors", // Change color scheme of Strategic Map
L"Alternate Bullet Graphics", // Show alternate bullet graphics (tracers) L"Alternate Bullet Graphics", // Show alternate bullet graphics (tracers)
// L"Use new Chance to Hit System", // use NCTH
L"Show Merc Ranks", // shows mercs ranks L"Show Merc Ranks", // shows mercs ranks
L"Show Face Gear Graphics", L"Show Face Gear Graphics",
L"Show Face Gear Icons", L"Show Face Gear Icons",
@@ -5112,7 +5110,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring
L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns
L"Allow Zombies", // Flugente Zombies 1.0 L"Allow Zombies", // Flugente Zombies 1.0
//L"Weapons Overheating", // TODO.Translate
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5208,21 +5205,20 @@ STR16 zOptionsScreenHelpText[] =
L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.",
L"When ON, game will be saved in 2 alternate save slots after each player's turn.", L"When ON, game will be saved in 2 alternate save slots after each player's turn.",
L"When ON, Skyrider will not talk anymore.", L"When ON, Skyrider will not talk anymore.",
//L"When ON, game will run with much lower CPU usage.",
L"When ON, enhanced descriptions will be shown for items and weapons.", L"When ON, enhanced descriptions will be shown for items and weapons.",
L"When ON and enemy present, turn base mode persists untill sector is free (|C|t|r|l+|S|h|i|f|t+|A|l|t+|T).", // add forced turn mode L"When ON and enemy present, turn base mode persists untill sector is free (|C|t|r|l+|S|h|i|f|t+|A|l|t+|T).", // add forced turn mode
L"When ON, shows character progress towards gaining levels.", L"When ON, shows character progress towards gaining levels.",
L"When ON, the strategic map will be colored differently based on exploration.", L"When ON, the strategic map will be colored differently based on exploration.",
L"When ON, alternate bullet graphics will be shown when you shoot.", L"When ON, alternate bullet graphics will be shown when you shoot.",
// L"When ON, the new chance to hit system and cursor is used.", L"When ON, ranks will be displayed before merc names in the strategic view.",
L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate
L"When ON, you will see the equipped face gear on the merc portraits.", L"When ON, you will see the equipped face gear on the merc portraits.",
L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.", L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.",
L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.", L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.",
L"When ON, mercs will not report progress during training.", L"When ON, mercs will not report progress during training.",
L"When ON, mercs will not report progress during repairing.",
L"When ON, mercs will not report progress during doctoring.",
L"When ON, AI turns will be much faster.", L"When ON, AI turns will be much faster.",
L"When ON, zombies will spawn. Be aware!", // allow zombies L"When ON, zombies will spawn. Be aware!", // allow zombies
//L"When ON, weapons can be overheated when firing.", // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Force all pending Bobby Ray shipments", L"Force all pending Bobby Ray shipments",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
@@ -7223,7 +7219,7 @@ STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]=
L"\n \nThis is the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nLower frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nLower is better.", L"\n \nThis is the shooter's ability to\nfrequently reasses how much counter-force they\nneed to apply against a gun's recoil.\n \nNaturally, this has no effect if the weapon lacks\nboth Burst and Auto-Fire modes.\n \nLower frequency makes volleys more accurate on the whole,\nand also makes longer volleys more accurate assuming\nthe shooter can overcome recoil correctly.\n \nLower is better.",
L"\n \nThis weapon's to-hit is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased To-Hit allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.", L"\n \nThis weapon's to-hit is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased To-Hit allows the gun to hit targets\nmore often, assuming it is also well-aimed.\n \nHigher is better.",
L"\n \nThis weapon's Aim Bonus is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased Aim Bonus allows the gun to hit\ntargets at longer ranges more often, assuming\nit is also well-aimed.\n \nHigher is better.", L"\n \nThis weapon's Aim Bonus is being modified by\nan ammo, attachment, or built-in attributes.\n \nIncreased Aim Bonus allows the gun to hit\ntargets at longer ranges more often, assuming\nit is also well-aimed.\n \nHigher is better.",
L"\n \nA single shot causes this much heat.\nThe type of ammunition can affect this value.\n \nLower is better.", // TODO.Translate L"\n \nA single shot causes this much heat.\nThe type of ammunition can affect this value.\n \nLower is better.",
L"\n \nEvery turn, the temperature is lowered\nby this amount.\nWeapon attachments can affect this.\n \nHigher is better.", L"\n \nEvery turn, the temperature is lowered\nby this amount.\nWeapon attachments can affect this.\n \nHigher is better.",
L"\n \nIf a gun's temperature is above this,\nit will jam more frequently.", L"\n \nIf a gun's temperature is above this,\nit will jam more frequently.",
L"\n \nIf a gun's temperature is above this,\nit will be damaged more easily.", L"\n \nIf a gun's temperature is above this,\nit will be damaged more easily.",
+2 -6
View File
@@ -5087,13 +5087,11 @@ STR16 zOptionsToggleText[] =
L"Afficher infobulle soldat", L"Afficher infobulle soldat",
L"Sauvegarde auto", L"Sauvegarde auto",
L"Silence Skyrider !", L"Silence Skyrider !",
//L"Faible consommation processeur",
L"EDB (mod rajoutant info utiles)", L"EDB (mod rajoutant info utiles)",
L"Mode tour par tour forcé", // add forced turn mode L"Mode tour par tour forcé", // add forced turn mode
L"Afficher deviation balle", // Screen messages showing amount and direction of shot deviation. L"Afficher deviation balle", // Screen messages showing amount and direction of shot deviation.
L"Couleur alternative map", // Change color scheme of Strategic Map L"Couleur alternative map", // Change color scheme of Strategic Map
L"Montrer tirs alternatifs", // Show alternate bullet graphics (tracers) L"Montrer tirs alternatifs", // Show alternate bullet graphics (tracers)
//L"Activé NCTH", // use NCTH
L"Show Merc Ranks", // shows mercs ranks // TODO.Translate L"Show Merc Ranks", // shows mercs ranks // TODO.Translate
L"Afficher équipments portrait", L"Afficher équipments portrait",
L"Afficher icones portraits", L"Afficher icones portraits",
@@ -5103,7 +5101,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate
L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate
L"Allow Zombies", // Flugente Zombies 1.0 L"Allow Zombies", // Flugente Zombies 1.0
//L"Weapons Overheating", // TODO.Translate
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Forcer envois Bobby Ray", // force all pending Bobby Ray shipments L"Forcer envois Bobby Ray", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5199,21 +5196,20 @@ STR16 zOptionsScreenHelpText[] =
L"Si activé, une fenêtre info-bulle apparaît lorsque vous appuyez sur |A|l|t et que le curseur est au dessus d'un ennemi.", L"Si activé, une fenêtre info-bulle apparaît lorsque vous appuyez sur |A|l|t et que le curseur est au dessus d'un ennemi.",
L"Si activé, le jeu est sauvegardé à chaque nouveau tour du joueur.", L"Si activé, le jeu est sauvegardé à chaque nouveau tour du joueur.",
L"Si activé, les confirmations insistantes de Skyrider cessent.", L"Si activé, les confirmations insistantes de Skyrider cessent.",
//L"Si activé, le jeu restreint l'utilisation du processeur.",
L"Si activé, l'EDB sera affiché pour les armes et objets.", L"Si activé, l'EDB sera affiché pour les armes et objets.",
L"Si cette option est activée et que des ennemis sont présents, \nle mode tour par tour est actif tant qu'il reste \ndes ennemis dans le secteur (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode L"Si cette option est activée et que des ennemis sont présents, \nle mode tour par tour est actif tant qu'il reste \ndes ennemis dans le secteur (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode
L"Si activé, montre la progression des caractères à travers le gain de niveaux.", L"Si activé, montre la progression des caractères à travers le gain de niveaux.",
L"Si activé, la carte stratégique sera coloré différemment selon l'exploration.", L"Si activé, la carte stratégique sera coloré différemment selon l'exploration.",
L"Si activé, le graphisme des tirs alternatifs sera affiché quand vous tirerez.", L"Si activé, le graphisme des tirs alternatifs sera affiché quand vous tirerez.",
//L"Si activé, le nouveau systéme NCTH (chance de toucher) \nainsi que le nouveau curseur seront utilisés.",
L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate
L"Si activé, vous verrez l'équipement du mercenaire à travers son portrait.", L"Si activé, vous verrez l'équipement du mercenaire à travers son portrait.",
L"Si activé, vous verrez les icones correspondant à l'équipement porté en bas à droite du portrait.", L"Si activé, vous verrez les icones correspondant à l'équipement porté en bas à droite du portrait.",
L"Si activé, le curseur ne basculera pas entre changer de position et une autre action. Appuyez sur |x pour initier un échange rapide.", L"Si activé, le curseur ne basculera pas entre changer de position et une autre action. Appuyez sur |x pour initier un échange rapide.",
L"When ON, mercs will not report progress during training.", L"When ON, mercs will not report progress during training.",
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"When ON, AI turns will be much faster.", // TODO.Translate L"When ON, AI turns will be much faster.", // TODO.Translate
L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
//L"When ON, weapons can be overheated when firing.", // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Forcer tous les envois en attente de Bobby Ray", L"Forcer tous les envois en attente de Bobby Ray",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
+5 -8
View File
@@ -4945,23 +4945,20 @@ STR16 zOptionsToggleText[] =
L"Tooltips über Gegner", L"Tooltips über Gegner",
L"Automatisch speichern", L"Automatisch speichern",
L"Stummer Skyrider", L"Stummer Skyrider",
//L"Niedrige CPU Belastung",
L"Erw. Gegenstandsinfo", L"Erw. Gegenstandsinfo",
L"Erzwungener Runden-Modus", // add forced turn mode L"Erzwungener Runden-Modus", // add forced turn mode
L"Status Trainingsfortschritt", // Show progress towards stat increase L"Status Trainingsfortschritt", // Show progress towards stat increase
L"Alternatives Kartenfarbschema", // Change color scheme of Strategic Map L"Alternatives Kartenfarbschema", // Change color scheme of Strategic Map
L"Alternative Projektil-Grafik", // Show alternate bullet graphics (tracers) L"Alternative Projektil-Grafik", // Show alternate bullet graphics (tracers)
//L"Neues Zielsystem verwenden", // use NCTH
L"Söldnerrang anzeigen.", // shows mercs ranks L"Söldnerrang anzeigen.", // shows mercs ranks
L"Gesichtsequipment-Grafiken", L"Gesichtsequipment-Grafiken",
L"Gesichtsequipment-Icons", L"Gesichtsequipment-Icons",
L"Cursor-Wechsel deaktivieren", // Disable Cursor Swap L"Cursor-Wechsel deaktivieren", // Disable Cursor Swap
L"Stummes Trainieren", // Madd: mercs don't say quotes while training L"Stummes Trainieren", // Madd: mercs don't say quotes while training
L"Quiet Repairing", // Madd: mercs don't say quotes while repairing TODO.Translate L"Stummes Reparieren", // Madd: mercs don't say quotes while repairing
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring TODO.Translate L"Stumme Behandlung", // Madd: mercs don't say quotes while doctoring
L"Autom. schnelle Gegner-Züge", // Automatic fast forward through AI turns L"Autom. schnelle Gegner-Züge", // Automatic fast forward through AI turns
L"Allow Zombies", // Flugente Zombies 1.0 L"Allow Zombies", // Flugente Zombies 1.0
//L"Waffen können überhitzen",
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Erzwinge BR Lieferung", // force all pending Bobby Ray shipments L"Erzwinge BR Lieferung", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5057,20 +5054,20 @@ STR16 zOptionsScreenHelpText[] =
L"Wenn diese Funktion aktiviert ist, werden mit Druck auf |A|l|t Informationen über den Gegner eingeblendet, auf dem sich der Maus-Cursor befindet.", L"Wenn diese Funktion aktiviert ist, werden mit Druck auf |A|l|t Informationen über den Gegner eingeblendet, auf dem sich der Maus-Cursor befindet.",
L"Wenn diese Funktion aktiviert ist, wird nach jeder Runde automatisch abwechselnd in zwei speziellen Autosave-Spielständen gespeichert.", L"Wenn diese Funktion aktiviert ist, wird nach jeder Runde automatisch abwechselnd in zwei speziellen Autosave-Spielständen gespeichert.",
L"Wenn diese Funktion aktiviert ist, wird Skyrider nichts mehr sagen. Verwenden Sie diese Option, wenn er Ihnen auf die Nüsse geht.", L"Wenn diese Funktion aktiviert ist, wird Skyrider nichts mehr sagen. Verwenden Sie diese Option, wenn er Ihnen auf die Nüsse geht.",
//L"Aktivieren Sie diese Funktion, wenn Ihr Rechner steinalt ist und anderenfalls Probleme auftreten würden.",
L"Wenn diese Funktion aktiviert ist, werden erweiterte Beschreibungen und Werte zu den Waffen und Gegenständen angezeigt.", L"Wenn diese Funktion aktiviert ist, werden erweiterte Beschreibungen und Werte zu den Waffen und Gegenständen angezeigt.",
L"Wenn diese Funktion aktiviert ist und noch Gegner im Sektor sind, bleibt das Spiel im Runden-Modus, bis alle Feinde tot sind (|C|t|r|l+|S|h|i|f|t+|A|l|t+|T).", L"Wenn diese Funktion aktiviert ist und noch Gegner im Sektor sind, bleibt das Spiel im Runden-Modus, bis alle Feinde tot sind (|C|t|r|l+|S|h|i|f|t+|A|l|t+|T).",
L"Wenn diese Funktion aktiviert ist, werden die Söldnerwerte visuell mit ihrem Trainingsfortschritt unterlegt.", L"Wenn diese Funktion aktiviert ist, werden die Söldnerwerte visuell mit ihrem Trainingsfortschritt unterlegt.",
L"Wenn diese Funktion aktiviert ist, wird die Strategische Karte entsprechend Ihres Erkundungsfortschrittes unterschiedlich eingefärbt.", L"Wenn diese Funktion aktiviert ist, wird die Strategische Karte entsprechend Ihres Erkundungsfortschrittes unterschiedlich eingefärbt.",
L"Wenn diese Funktion aktiviert ist, werden geschossene Projektile visuell mit Tracer-Effekten dargestellt.", L"Wenn diese Funktion aktiviert ist, werden geschossene Projektile visuell mit Tracer-Effekten dargestellt.",
//L"Wenn diese Funktion aktiviert ist, wird das neue Zielsystem und der neue Zielcursor verwendet.",
L"Wenn diese Funktion aktiviert ist, werden die Ränge der Söldner in der Strategischen Karte vor dem Namen angezeigt.", L"Wenn diese Funktion aktiviert ist, werden die Ränge der Söldner in der Strategischen Karte vor dem Namen angezeigt.",
L"Wenn diese Funktion aktiviert ist, sehen sie das Gesichtsequipment Ihrer Söldner direkt auf dem Portrait.", L"Wenn diese Funktion aktiviert ist, sehen sie das Gesichtsequipment Ihrer Söldner direkt auf dem Portrait.",
L"Wenn diese Funktion aktiviert ist, sehen sie Icons für das Gesichtsequipment in der rechten unteren Ecke des Portraits.", L"Wenn diese Funktion aktiviert ist, sehen sie Icons für das Gesichtsequipment in der rechten unteren Ecke des Portraits.",
L"Wenn diese Funktion aktiviert ist, wird der Mauscursor nicht automatisch wechseln zwischen Personen-Positionswechsel und weiteren Aktionen.\nFür manuellen Positionswechsel drücken Sie |x.", L"Wenn diese Funktion aktiviert ist, wird der Mauscursor nicht automatisch wechseln zwischen Personen-Positionswechsel und weiteren Aktionen.\nFür manuellen Positionswechsel drücken Sie |x.",
L"Wenn diese Funktion aktiviert ist, werden die Söldner über ihren Fortschritt während des Trainings nicht mehr berichten.", L"Wenn diese Funktion aktiviert ist, werden die Söldner über ihren Fortschritt während des Trainings nicht mehr berichten.",
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"Wenn diese Funktion aktiviert ist, werden gegnerische Züge schneller durchgeführt.", L"Wenn diese Funktion aktiviert ist, werden gegnerische Züge schneller durchgeführt.",
//L"Wenn diese Funktion aktiviert ist, können sich Waffen überhiten bei schneller Schussfolge.", L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Force all pending Bobby Ray shipments", L"Force all pending Bobby Ray shipments",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
+3 -7
View File
@@ -5082,13 +5082,11 @@ STR16 zOptionsToggleText[] =
L"Show Soldier Tooltips", L"Show Soldier Tooltips",
L"Auto save", L"Auto save",
L"Silent Skyrider", L"Silent Skyrider",
//L"Low CPU usage",
L"Enhanced Description Box", L"Enhanced Description Box",
L"Forced Turn Mode", // add forced turn mode L"Forced Turn Mode", // add forced turn mode
L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate
L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map
L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate
//L"Activate New CTH system", // use NCTH
L"Show Merc Ranks", // shows mercs ranks // TODO.Translate L"Show Merc Ranks", // shows mercs ranks // TODO.Translate
L"Show Face gear graphics", // TODO.Translate L"Show Face gear graphics", // TODO.Translate
L"Show Face gear icons", L"Show Face gear icons",
@@ -5098,7 +5096,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate
L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate
L"Allow Zombies", // Flugente Zombies 1.0 L"Allow Zombies", // Flugente Zombies 1.0
//L"Weapons Overheating", // TODO.Translate
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5154,7 +5151,7 @@ STR16 zOptionsScreenHelpText[] =
L"Se attivata, sarà richiesto un altro clic su \"salva\" per il movimento in tempo reale.", L"Se attivata, sarà richiesto un altro clic su \"salva\" per il movimento in tempo reale.",
//Sleep/Wake notification //Sleep/Wake notification
L"Se attivata, verrete avvisati quando i mercenari in \"servizio\" vanno a riposare e quando rientrano in servizio.", L"Se attivata, verrete avvisati quando i mercenari in \"servizio\" vanno a riposare e quando rientrano in servizio.",
//Use the metric system //Use the metric system
L"Se attivata, utilizza il sistema metrico di misurazione; altrimenti ricorre al sistema britannico.", L"Se attivata, utilizza il sistema metrico di misurazione; altrimenti ricorre al sistema britannico.",
@@ -5194,21 +5191,20 @@ STR16 zOptionsScreenHelpText[] =
L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.",
L"When ON, game will be saved in 2 alternate save slots after each players turn.", L"When ON, game will be saved in 2 alternate save slots after each players turn.",
L"When ON, Skyrider will not talk anymore.", L"When ON, Skyrider will not talk anymore.",
//L"When ON, game will run with much lower CPU usage.",
L"When ON, enhanced descriptions will be shown for items and weapons.", L"When ON, enhanced descriptions will be shown for items and weapons.",
L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode
L"When ON, shows character progress towards gaining levels.", // TODO.Translate L"When ON, shows character progress towards gaining levels.", // TODO.Translate
L"When ON, the Strategic Map will be colored differently based on exploration.", L"When ON, the Strategic Map will be colored differently based on exploration.",
L"When ON, alternate bullet graphics will be shown when you shoot.", // TODO.Translate L"When ON, alternate bullet graphics will be shown when you shoot.", // TODO.Translate
//L"When ON, New CTH system and cursor is used.",
L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate
L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate
L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.", L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.",
L"Se attivato, il cursore non si alternerà tra la posizione di scambio e altre azioni. Premere |x per avviare lo scambio rapido.", L"Se attivato, il cursore non si alternerà tra la posizione di scambio e altre azioni. Premere |x per avviare lo scambio rapido.",
L"When ON, mercs will not report progress during training.", L"When ON, mercs will not report progress during training.",
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"When ON, AI turns will be much faster.", // TODO.Translate L"When ON, AI turns will be much faster.", // TODO.Translate
L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
//L"When ON, weapons can be overheated when firing.", // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Force all pending Bobby Ray shipments", L"Force all pending Bobby Ray shipments",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
+2 -6
View File
@@ -5094,13 +5094,11 @@ STR16 zOptionsToggleText[] =
L"Show Soldier Tooltips", L"Show Soldier Tooltips",
L"Automatyczny zapis", L"Automatyczny zapis",
L"Cichy Skyrider", L"Cichy Skyrider",
//L"Niskie obciążenie procesora",
L"Rozszerzone Okno Opisu (EDB)", //Enhanced Description Box L"Rozszerzone Okno Opisu (EDB)", //Enhanced Description Box
L"WymuŚ tryb turowy", // add forced turn mode L"WymuŚ tryb turowy", // add forced turn mode
L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate
L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map
L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate
//L"Activate New CTH system", // use NCTH
L"Show Merc Ranks", // shows mercs ranks // TODO.Translate L"Show Merc Ranks", // shows mercs ranks // TODO.Translate
L"Show Face gear graphics", // TODO.Translate L"Show Face gear graphics", // TODO.Translate
L"Show Face gear icons", L"Show Face gear icons",
@@ -5110,7 +5108,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate
L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate
L"Allow Zombies", // Flugente Zombies 1.0 L"Allow Zombies", // Flugente Zombies 1.0
//L"Weapons Overheating", // TODO.Translate
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5207,20 +5204,19 @@ STR16 zOptionsScreenHelpText[] =
L"JeŚli WŁ¥CZONE, gra będzie zapisywana każdorazowo po zakończeniu tury gracza.", L"JeŚli WŁ¥CZONE, gra będzie zapisywana każdorazowo po zakończeniu tury gracza.",
L"JeŚli WŁ¥CZONE, Skyrider nie będzie nic mówił.", L"JeŚli WŁ¥CZONE, Skyrider nie będzie nic mówił.",
L"JeŚli WŁ¥CZONE, gra będzie obciążała procesor w mniejszym stopniu.", L"JeŚli WŁ¥CZONE, gra będzie obciążała procesor w mniejszym stopniu.",
//L"JeŚli WŁ¥CZONE, rozszerzone opisy będą pokazane dla przedmiotów i broni.",
L"JeŚli WŁ¥CZONE i wróg jest obecny, \ntryb turowy jest włączony, \ndopóki sektor nie zostanie oczyszczony (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode L"JeŚli WŁ¥CZONE i wróg jest obecny, \ntryb turowy jest włączony, \ndopóki sektor nie zostanie oczyszczony (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode
L"Gdy WŁ¥CZONE, pokazuje postęp w doŚwiadczeniu postaci.", L"Gdy WŁ¥CZONE, pokazuje postęp w doŚwiadczeniu postaci.",
L"When ON, the Strategic Map will be colored differently based on exploration.", L"When ON, the Strategic Map will be colored differently based on exploration.",
L"Gdy WŁ¥CZONE, zastępuje starą animację pocisku nową.", L"Gdy WŁ¥CZONE, zastępuje starą animację pocisku nową.",
//L"When ON, New CTH system and cursor is used.",
L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate
L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate
L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.", L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.",
L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.", // TODO.Translate L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.", // TODO.Translate
L"When ON, mercs will not report progress during training.", L"When ON, mercs will not report progress during training.",
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"When ON, AI turns will be much faster.", // TODO.Translate L"When ON, AI turns will be much faster.", // TODO.Translate
L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
//L"When ON, weapons can be overheated when firing.", // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"WymuŚ wszystkie oczekiwane dostawy od Bobby Ray's.", L"WymuŚ wszystkie oczekiwane dostawy od Bobby Ray's.",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
+2 -6
View File
@@ -5077,13 +5077,11 @@ STR16 zOptionsToggleText[] =
L"Подсказки над солдатами", //Show Soldier Tooltips L"Подсказки над солдатами", //Show Soldier Tooltips
L"Автосохранение каждый ход", L"Автосохранение каждый ход",
L"Молчаливый пилот вертолёта", L"Молчаливый пилот вертолёта",
//L"Низкая загрузка процессора",
L"Подробное описание предметов", //Enhanced Description Box L"Подробное описание предметов", //Enhanced Description Box
L"Только пошаговый режим", // add forced turn mode L"Только пошаговый режим", // add forced turn mode
L"Подсветить навык к повышению", //Stat Progress Bars // Show progress towards stat increase L"Подсветить навык к повышению", //Stat Progress Bars // Show progress towards stat increase
L"Новая расцветка стратег. карты", //Alternate Strategy-Map Colors //Change color scheme of Strategic Map L"Новая расцветка стратег. карты", //Alternate Strategy-Map Colors //Change color scheme of Strategic Map
L"Заметная летящая пуля", // Show alternate bullet graphics (tracers) L"Заметная летящая пуля", // Show alternate bullet graphics (tracers)
//L"Новая система прицеливания", // use NCTH
L"Show Merc Ranks", // shows mercs ranks // TODO.Translate L"Show Merc Ranks", // shows mercs ranks // TODO.Translate
L"Показать снаряжение на голове", //Show Face gear graphics L"Показать снаряжение на голове", //Show Face gear graphics
L"Показать иконки снаряжения", L"Показать иконки снаряжения",
@@ -5093,7 +5091,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate
L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate
L"Allow Zombies", // Flugente Zombies 1.0 L"Allow Zombies", // Flugente Zombies 1.0
//L"Weapons Overheating", // TODO.Translate
L"--Читерские настройки--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Читерские настройки--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Ускорить доставку Бобби Рэя", // force all pending Bobby Ray shipments L"Ускорить доставку Бобби Рэя", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5189,21 +5186,20 @@ STR16 zOptionsScreenHelpText[] =
L"Если включено, при нажатии кнопки |A|l|t \nи наведении курсора мыши на вражеского солдата \nбудет показана дополнительная информация.", L"Если включено, при нажатии кнопки |A|l|t \nи наведении курсора мыши на вражеского солдата \nбудет показана дополнительная информация.",
L"Если включено, игра будет автоматически \nсохраняться после каждого хода игрока.", L"Если включено, игра будет автоматически \nсохраняться после каждого хода игрока.",
L"Если включено, Небесный Всадник\nне будет вас раздражать болтливостью.", L"Если включено, Небесный Всадник\nне будет вас раздражать болтливостью.",
//L"Если включено, игра будет использовать\nменьше процессорного времени.",
L"Если включено, будет задействовано\nподробное описание предметов.", L"Если включено, будет задействовано\nподробное описание предметов.",
L"Если включено и в секторе присутствует враг, \nпошаговый режим будет задействован \nдо полной зачистки сектора (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", L"Если включено и в секторе присутствует враг, \nпошаговый режим будет задействован \nдо полной зачистки сектора (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).",
L"Если включено, навык, \nкоторый вскоре повысится будет подсвечен.", L"Если включено, навык, \nкоторый вскоре повысится будет подсвечен.",
L"Если включено, необследованные сектрора \nна стратегической карте будут чёрно-белыми.", L"Если включено, необследованные сектрора \nна стратегической карте будут чёрно-белыми.",
L"Если включено, летящая пуля будет более заметной.", L"Если включено, летящая пуля будет более заметной.",
//L"Если включено, будет задействована новая система прицеливания \nи новый курсор прицеливания.",
L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate
L"Если включено, на портрете наёмника будет отображено одетое головное снаряжение.", L"Если включено, на портрете наёмника будет отображено одетое головное снаряжение.",
L"Если включено, в правом нижнем углу \nна портрете наёмника будут отображены иконки \nодетого головного снаряжения.", L"Если включено, в правом нижнем углу \nна портрете наёмника будут отображены иконки \nодетого головного снаряжения.",
L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.", // TODO.Translate L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.", // TODO.Translate
L"When ON, mercs will not report progress during training.", L"When ON, mercs will not report progress during training.",
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"When ON, AI turns will be much faster.", // TODO.Translate L"When ON, AI turns will be much faster.", // TODO.Translate
L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
//L"When ON, weapons can be overheated when firing.", // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Выберите этот пункт чтобы груз Бобби Рэя прибыл немедленно.", L"Выберите этот пункт чтобы груз Бобби Рэя прибыл немедленно.",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",
+2 -6
View File
@@ -5098,13 +5098,11 @@ STR16 zOptionsToggleText[] =
L"Show Soldier Tooltips", L"Show Soldier Tooltips",
L"Auto save", L"Auto save",
L"Silent Skyrider", L"Silent Skyrider",
//L"Low CPU usage",
L"Enhanced Description Box", L"Enhanced Description Box",
L"Forced Turn Mode", // add forced turn mode L"Forced Turn Mode", // add forced turn mode
L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate L"Stat Progress Bars", // Show progress towards stat increase // TODO.Translate
L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map L"Alternate Strategy-Map Colors", // Change color scheme of Strategic Map
L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate L"Alternate bullet graphics", // Show alternate bullet graphics (tracers) // TODO.Translate
//L"Activate New CTH system", // use NCTH
L"Show Merc Ranks", // shows mercs ranks // TODO.Translate L"Show Merc Ranks", // shows mercs ranks // TODO.Translate
L"Show Face gear graphics", // TODO.Translate L"Show Face gear graphics", // TODO.Translate
L"Show Face gear icons", L"Show Face gear icons",
@@ -5114,7 +5112,6 @@ STR16 zOptionsToggleText[] =
L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate L"Quiet Doctoring", // Madd: mercs don't say quotes while doctoring //TODO.Translate
L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate L"Auto Fast Forward AI Turns", // Automatic fast forward through AI turns // TODO.Translate
L"Allow Zombies", // Flugente Zombies 1.0 L"Allow Zombies", // Flugente Zombies 1.0
//L"Weapons Overheating", // TODO.Translate
L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER, L"--Cheat Mode Options--", // TOPTION_CHEAT_MODE_OPTIONS_HEADER,
L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments L"Force Bobby Ray shipments", // force all pending Bobby Ray shipments
L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END L"-----------------", // TOPTION_CHEAT_MODE_OPTIONS_END
@@ -5210,21 +5207,20 @@ STR16 zOptionsScreenHelpText[] =
L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.", L"When ON, a tooltip window is shown when pressing |A|l|t and hovering cursor over an enemy.",
L"When ON, game will be saved in 2 alternate save slots after each players turn.", L"When ON, game will be saved in 2 alternate save slots after each players turn.",
L"When ON, Skyrider will not talk anymore.", L"When ON, Skyrider will not talk anymore.",
//L"When ON, game will run with much lower CPU usage.",
L"When ON, enhanced descriptions will be shown for items and weapons.", L"When ON, enhanced descriptions will be shown for items and weapons.",
L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // add forced turn mode
L"When ON, shows character progress towards gaining levels.", // TODO.Translate L"When ON, shows character progress towards gaining levels.", // TODO.Translate
L"When ON, the Strategic Map will be colored differently based on exploration.", L"When ON, the Strategic Map will be colored differently based on exploration.",
L"When ON, alternate bullet graphics will be shown when you shoot.", // TODO.Translate L"When ON, alternate bullet graphics will be shown when you shoot.", // TODO.Translate
//L"When ON, New CTH system and cursor is used.",
L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate L"When ON, ranks will be displayed before merc names in the strategic view.", // TODO.Translate
L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate L"When ON, you will see the equipped face gear on the merc portraits.", // TODO.Translate
L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.", L"When ON, you will see icons for the equipped face gear on the merc portraits in the lower right corner.",
L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.", L"When ON, the cursor will not toggle between exchange position and other actions. Press |x to initiate quick exchange.",
L"When ON, mercs will not report progress during training.", L"When ON, mercs will not report progress during training.",
L"When ON, mercs will not report progress during repairing.", // TODO.Translate
L"When ON, mercs will not report progress during doctoring.", // TODO.Translate
L"When ON, AI turns will be much faster.", // TODO.Translate L"When ON, AI turns will be much faster.", // TODO.Translate
L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate L"When ON, zombies will span. Be aware!", // allow zombies // TODO.Translate
//L"When ON, weapons can be overheated when firing.", // TODO.Translate
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_HEADER",
L"Force all pending Bobby Ray shipments", L"Force all pending Bobby Ray shipments",
L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END", L"(text not rendered)TOPTION_CHEAT_MODE_OPTIONS_END",