Merged revision(s) 7057 from branches/ja2_source_official_2014:

- increased background-based chance to steal to 50%, money/gold/solver will be preferred targets
- lowered exp stat gain for handling tripwire
- new background ability: disarm_trap alters effectivity at defusing bombs
- Fix: incorrectly deleted soldiers could still be counted as jamming/scanning

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7058 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2014-03-12 22:29:56 +00:00
parent f6ffee0583
commit fddb72a94e
16 changed files with 75 additions and 50 deletions
+9 -9
View File
@@ -15,9 +15,9 @@
#ifdef JA2EDITOR #ifdef JA2EDITOR
#ifdef JA2UB #ifdef JA2UB
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.6823 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.7057 (Development Build)" };
#else #else
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.6823 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.7057 (Development Build)" };
#endif #endif
// ------------------------------ // ------------------------------
@@ -27,11 +27,11 @@
//DEBUG BUILD VERSION //DEBUG BUILD VERSION
#ifdef JA2UB #ifdef JA2UB
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.6670 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.7057 (Development Build)" };
#elif defined (JA113DEMO) #elif defined (JA113DEMO)
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.6670 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.7057 (Development Build)" };
#else #else
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.6670 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Debug: v1.13.7057 (Development Build)" };
#endif #endif
#elif defined CRIPPLED_VERSION #elif defined CRIPPLED_VERSION
@@ -46,16 +46,16 @@
//RELEASE BUILD VERSION //RELEASE BUILD VERSION
#ifdef JA2UB #ifdef JA2UB
CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.6670 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.7057 (Development Build)" };
#elif defined (JA113DEMO) #elif defined (JA113DEMO)
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.6670 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.7057 (Development Build)" };
#else #else
CHAR16 zVersionLabel[256] = { L"Release v1.13.6670 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Release v1.13.7057 (Development Build)" };
#endif #endif
#endif #endif
CHAR8 czVersionNumber[16] = { "Build 13.11.30" }; //YY.MM.DD CHAR8 czVersionNumber[16] = { "Build 14.03.12" }; //YY.MM.DD
CHAR16 zTrackingNumber[16] = { L"Z" }; CHAR16 zTrackingNumber[16] = { L"Z" };
// SAVE_GAME_VERSION is defined in header, change it there // SAVE_GAME_VERSION is defined in header, change it there
+15 -6
View File
@@ -515,12 +515,14 @@ void HourlyStealUpdate()
{ {
pSoldier = MercPtrs[ cnt ]; pSoldier = MercPtrs[ cnt ];
if ( pSoldier && !pSoldier->flags.fBetweenSectors && pSoldier->bActive && pSoldier->bInSector && !pSoldier->flags.fMercAsleep && !(gTacticalStatus.fEnemyInSector || guiCurrentScreen == GAME_SCREEN ) ) // merc must be alive, not travelling and awake. If he is in the currently loaded sector, we may not be in tactical (we would see an item suddenly disappearing) and not in combat
if ( pSoldier && !pSoldier->flags.fBetweenSectors && pSoldier->bActive && !pSoldier->flags.fMercAsleep &&
!( ( ( gWorldSectorX == pSoldier->sSectorX ) && ( gWorldSectorY == pSoldier->sSectorY ) && (gbWorldSectorZ == pSoldier->bSectorZ ) ) && (gTacticalStatus.fEnemyInSector || guiCurrentScreen == GAME_SCREEN )) )
{ {
if ( pSoldier->HasBackgroundFlag( BACKGROUND_SCROUNGING ) ) if ( pSoldier->HasBackgroundFlag( BACKGROUND_SCROUNGING ) )
{ {
// 20% chance that we'll steal something // 50% chance that we'll steal something
if ( Chance(20) ) if ( Chance(50) )
{ {
// anv: snitches prevent scrounging in the same sector // anv: snitches prevent scrounging in the same sector
for( INT32 cnt2 = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt2 ) for( INT32 cnt2 = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; cnt2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; ++cnt2 )
@@ -562,7 +564,7 @@ void HourlyStealUpdate()
std::vector<WORLDITEM> pWorldItem;//dnl ch75 271013 std::vector<WORLDITEM> pWorldItem;//dnl ch75 271013
BOOLEAN fReturn = FALSE; BOOLEAN fReturn = FALSE;
if( ( gWorldSectorX == pSoldier->sSectorX ) && ( gWorldSectorY == pSoldier->sSectorY ) && (gbWorldSectorZ == pSoldier->bSectorZ ) ) if ( ( gWorldSectorX == pSoldier->sSectorX ) && ( gWorldSectorY == pSoldier->sSectorY ) && (gbWorldSectorZ == pSoldier->bSectorZ ) )
{ {
uiTotalNumberOfRealItems = guiNumWorldItems; uiTotalNumberOfRealItems = guiNumWorldItems;
@@ -591,7 +593,7 @@ void HourlyStealUpdate()
} }
} }
FLOAT bestpriceweightratio = 50.0f; // msut have a value of at least 50$/100 gram FLOAT bestpriceweightratio = 50.0f; // must have a value of at least 50$/100 gram
OBJECTTYPE* pTargetObj = NULL; OBJECTTYPE* pTargetObj = NULL;
for( UINT32 uiCount = 0; uiCount < uiTotalNumberOfRealItems; ++uiCount ) // ... for all items in the world ... for( UINT32 uiCount = 0; uiCount < uiTotalNumberOfRealItems; ++uiCount ) // ... for all items in the world ...
{ {
@@ -604,8 +606,15 @@ void HourlyStealUpdate()
// test wether item is reachable and useable by militia // test wether item is reachable and useable by militia
if ( (pWorldItem[ uiCount ].usFlags & WORLD_ITEM_REACHABLE) ) if ( (pWorldItem[ uiCount ].usFlags & WORLD_ITEM_REACHABLE) )
{ {
// of course we prefer money above everything else
if ( Item[pWorldItem[ uiCount ].object.usItem].usItemClass == IC_MONEY )
{
// give it a high enough value
bestpriceweightratio = 1000.0f;
pTargetObj = &(pWorldItem[ uiCount ].object);
}
// ignore objects without weight (how does that happen anyway? careless modders...) // ignore objects without weight (how does that happen anyway? careless modders...)
if ( Item[pWorldItem[ uiCount ].object.usItem].ubWeight ) else if ( Item[pWorldItem[ uiCount ].object.usItem].ubWeight )
{ {
if ( (FLOAT)(Item[pWorldItem[ uiCount ].object.usItem].usPrice) / (FLOAT)(Item[pWorldItem[ uiCount ].object.usItem].ubWeight) > bestpriceweightratio ) if ( (FLOAT)(Item[pWorldItem[ uiCount ].object.usItem].usPrice) / (FLOAT)(Item[pWorldItem[ uiCount ].object.usItem].ubWeight) > bestpriceweightratio )
{ {
+26 -28
View File
@@ -1805,8 +1805,8 @@ void HandleSoldierDropBomb( SOLDIERTYPE *pSoldier, INT32 sGridNo )
if ( iResult >= 0 ) if ( iResult >= 0 )
{ {
// Less explosives gain for placing tripwire // Less explosives gain for placing tripwire
if ( Item[ pSoldier->inv[ HANDPOS ].usItem ].tripwire == 1 ) if ( Item[ pSoldier->inv[ HANDPOS ].usItem ].tripwire )
StatChange( pSoldier, EXPLODEAMT, 5, FALSE ); StatChange( pSoldier, EXPLODEAMT, 1, FALSE );
else else
// EXPLOSIVES GAIN (25): Place a bomb, or buried and armed a mine // EXPLOSIVES GAIN (25): Place a bomb, or buried and armed a mine
StatChange( pSoldier, EXPLODEAMT, 25, FALSE ); StatChange( pSoldier, EXPLODEAMT, 25, FALSE );
@@ -6872,38 +6872,36 @@ BOOLEAN RemoveFortification( INT32 sGridNo )
INT32 CheckBombDisarmChance(void) INT32 CheckBombDisarmChance(void)
{ {
// NB owner grossness... bombs 'owned' by the enemy are stored with side value 1 in // NB owner grossness... bombs 'owned' by the enemy are stored with side value 1 in
// the map. So if we want to detect a bomb placed by the player, owner is > 1, and // the map. So if we want to detect a bomb placed by the player, owner is > 1, and
// owner - 2 gives the ID of the character who planted it // owner - 2 gives the ID of the character who planted it
if ( gTempObject[0]->data.misc.ubBombOwner > 1 && ( (INT32)gTempObject[0]->data.misc.ubBombOwner - 2 >= gTacticalStatus.Team[ OUR_TEAM ].bFirstID && gTempObject[0]->data.misc.ubBombOwner - 2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID ) ) if ( gTempObject[0]->data.misc.ubBombOwner > 1 && ( (INT32)gTempObject[0]->data.misc.ubBombOwner - 2 >= gTacticalStatus.Team[ OUR_TEAM ].bFirstID && gTempObject[0]->data.misc.ubBombOwner - 2 <= gTacticalStatus.Team[ OUR_TEAM ].bLastID ) )
{
// Flugente: get a tripwire-related bonus if we have a wire cutter in our hands
INT8 wirecutterbonus = 0;
if ( ( (&gpBoobyTrapSoldier->inv[HANDPOS])->exists() && Item[ gpBoobyTrapSoldier->inv[HANDPOS].usItem ].wirecutters == 1 ) || ( (&gpBoobyTrapSoldier->inv[SECONDHANDPOS])->exists() && Item[ gpBoobyTrapSoldier->inv[SECONDHANDPOS].usItem ].wirecutters == 1 ) )
{ {
// Flugente: get a tripwire-related bonus if we have a wire cutter in our hands // + 10 if item gets activated by tripwire
INT8 wirecutterbonus = 0; if ( Item[gTempObject.usItem].tripwireactivation == 1 )
if ( ( (&gpBoobyTrapSoldier->inv[HANDPOS])->exists() && Item[ gpBoobyTrapSoldier->inv[HANDPOS].usItem ].wirecutters == 1 ) || ( (&gpBoobyTrapSoldier->inv[SECONDHANDPOS])->exists() && Item[ gpBoobyTrapSoldier->inv[SECONDHANDPOS].usItem ].wirecutters == 1 ) ) wirecutterbonus += 10;
{ // + 10 if item is tripwire
// + 10 if item gets activated by tripwire if ( Item[gTempObject.usItem].tripwire == 1 )
if ( Item[gTempObject.usItem].tripwireactivation == 1 ) wirecutterbonus += 10;
wirecutterbonus += 10; }
// + 10 if item is tripwire
if ( Item[gTempObject.usItem].tripwire == 1 )
wirecutterbonus += 10;
}
if ( gTempObject[0]->data.misc.ubBombOwner - 2 == gpBoobyTrapSoldier->ubID ) if ( gTempObject[0]->data.misc.ubBombOwner - 2 == gpBoobyTrapSoldier->ubID )
{ {
// my own boobytrap! // my own boobytrap!
return SkillCheck( gpBoobyTrapSoldier, DISARM_TRAP_CHECK, 40 + wirecutterbonus ); return SkillCheck( gpBoobyTrapSoldier, DISARM_TRAP_CHECK, 40 + wirecutterbonus );
}
else
{
// our team's boobytrap!
return SkillCheck( gpBoobyTrapSoldier, DISARM_TRAP_CHECK, 20 + wirecutterbonus );
}
} }
else else
{ {
return SkillCheck( gpBoobyTrapSoldier, DISARM_TRAP_CHECK, 0 ); // our team's boobytrap!
return SkillCheck( gpBoobyTrapSoldier, DISARM_TRAP_CHECK, 20 + wirecutterbonus );
} }
}
return SkillCheck( gpBoobyTrapSoldier, DISARM_TRAP_CHECK, 0 );
} }
void ExtendedDisarmMessageBox(void) void ExtendedDisarmMessageBox(void)
+1
View File
@@ -173,6 +173,7 @@ enum {
BG_PERC_CTH_MAX, BG_PERC_CTH_MAX,
BG_PERC_HEARING_NIGHT, BG_PERC_HEARING_NIGHT,
BG_PERC_HEARING_DAY, BG_PERC_HEARING_DAY,
BG_TRAP_DISARM,
// approaches // approaches
BG_PERC_APPROACH_FRIENDLY, BG_PERC_APPROACH_FRIENDLY,
+5 -1
View File
@@ -455,6 +455,10 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
} }
iSkill += EffectiveDexterity( pSoldier, FALSE ) * 2; iSkill += EffectiveDexterity( pSoldier, FALSE ) * 2;
iSkill += EffectiveExpLevel( pSoldier ) * 10; iSkill += EffectiveExpLevel( pSoldier ) * 10;
// Flugente: backgrounds
iSkill += pSoldier->GetBackgroundValue(BG_TRAP_DISARM);
iSkill = iSkill / 10; // bring the value down to a percentage iSkill = iSkill / 10; // bring the value down to a percentage
//JMich_SkillModifiers: Adding a Disarm Trap bonus //JMich_SkillModifiers: Adding a Disarm Trap bonus
bSlot = FindDisarmKit( pSoldier); bSlot = FindDisarmKit( pSoldier);
@@ -621,7 +625,7 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
} }
break; break;
case ATTACH_POWER_PACK: // added by Flugente case ATTACH_POWER_PACK: // added by Flugente
// technicians can attach it, other people can' // technicians can attach it, other people can't
if ( HAS_SKILL_TRAIT( pSoldier, TECHNICIAN_NT )) if ( HAS_SKILL_TRAIT( pSoldier, TECHNICIAN_NT ))
iSkill = 100; iSkill = 100;
else else
+4 -6
View File
@@ -17022,7 +17022,7 @@ INT16 SOLDIERTYPE::GetAPBonus()
if ( this->pathing.bLevel ) if ( this->pathing.bLevel )
bonus += this->GetBackgroundValue(BG_HEIGHT); bonus += this->GetBackgroundValue(BG_HEIGHT);
return bonus; return bonus;
} }
@@ -17039,7 +17039,7 @@ UINT8 SOLDIERTYPE::GetMoraleThreshold()
{ {
UINT8 threshold = 100; UINT8 threshold = 100;
UINT8 moraledamage = 0; UINT8 moraledamage = 0;
moraledamage = (moraledamage * (100 - GetFearResistanceBonus())) / 100; moraledamage = (moraledamage * (100 - GetFearResistanceBonus())) / 100;
return min(threshold, max(0, threshold - moraledamage)); return min(threshold, max(0, threshold - moraledamage));
@@ -17421,8 +17421,6 @@ BOOLEAN SOLDIERTYPE::UseRadio()
BOOLEAN SOLDIERTYPE::HasMortar() BOOLEAN SOLDIERTYPE::HasMortar()
{ {
UINT16 mortaritem = 0;
INT8 invsize = (INT8)inv.size(); // remember inventorysize, so we don't call size() repeatedly INT8 invsize = (INT8)inv.size(); // remember inventorysize, so we don't call size() repeatedly
for ( INT8 bLoop = 0; bLoop < invsize; ++bLoop) for ( INT8 bLoop = 0; bLoop < invsize; ++bLoop)
{ {
@@ -21432,7 +21430,7 @@ BOOLEAN SectorJammed()
INT32 lastid = MAX_NUM_SOLDIERS; INT32 lastid = MAX_NUM_SOLDIERS;
for ( pSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pSoldier) for ( pSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pSoldier)
{ {
if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->IsJamming() ) if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsJamming() )
return TRUE; return TRUE;
} }
@@ -21447,7 +21445,7 @@ BOOLEAN PlayerTeamIsScanning()
INT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID; INT32 lastid = gTacticalStatus.Team[ OUR_TEAM ].bLastID;
for ( pSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pSoldier) for ( pSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pSoldier)
{ {
if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->IsScanning() ) if ( pSoldier->sSectorX == gWorldSectorX && pSoldier->sSectorY == gWorldSectorY && pSoldier->bSectorZ == gbWorldSectorZ && pSoldier->stats.bLife > 0 && pSoldier->IsScanning() )
return TRUE; return TRUE;
} }
+6
View File
@@ -116,6 +116,7 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha
strcmp(name, "increased_maxcth") == 0 || strcmp(name, "increased_maxcth") == 0 ||
strcmp(name, "hearing_night") == 0 || strcmp(name, "hearing_night") == 0 ||
strcmp(name, "hearing_day") == 0 || strcmp(name, "hearing_day") == 0 ||
strcmp(name, "disarm_trap") == 0 ||
strcmp(name, "approach_friendly") == 0 || strcmp(name, "approach_friendly") == 0 ||
strcmp(name, "approach_direct") == 0 || strcmp(name, "approach_direct") == 0 ||
strcmp(name, "approach_threaten") == 0 || strcmp(name, "approach_threaten") == 0 ||
@@ -471,6 +472,11 @@ backgroundEndElementHandle(void *userData, const XML_Char *name)
pData->curElement = ELEMENT; pData->curElement = ELEMENT;
pData->curBackground.value[BG_PERC_HEARING_DAY] = min(2, max(-5, (INT16) atol(pData->szCharData) )); pData->curBackground.value[BG_PERC_HEARING_DAY] = min(2, max(-5, (INT16) atol(pData->szCharData) ));
} }
else if(strcmp(name, "disarm_trap") == 0)
{
pData->curElement = ELEMENT;
pData->curBackground.value[BG_TRAP_DISARM] = min(50, max(-50, (INT16) atol(pData->szCharData) ));
}
else if(strcmp(name, "approach_friendly") == 0) else if(strcmp(name, "approach_friendly") == 0)
{ {
pData->curElement = ELEMENT; pData->curElement = ELEMENT;
+1
View File
@@ -8103,6 +8103,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%%最大准确度(CTH)\n", //L" %s%d%% max CTH\n", L" %s%d%%最大准确度(CTH)\n", //L" %s%d%% max CTH\n",
L" %s%d夜晚听力范围\n", //L" %s%d hearing range during the night\n", L" %s%d夜晚听力范围\n", //L" %s%d hearing range during the night\n",
L" %s%d白天听力范围\n", //L" %s%d hearing range during the day\n", L" %s%d白天听力范围\n", //L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%%友好对话效果\n", //L" %s%d%% effectiveness to friendly approach\n", L" %s%d%%友好对话效果\n", //L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%%直接对话效果\n", //L" %s%d%% effectiveness to direct approach\n", L" %s%d%%直接对话效果\n", //L" %s%d%% effectiveness to direct approach\n",
+1
View File
@@ -8117,6 +8117,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% max CTH\n", L" %s%d%% max CTH\n",
L" %s%d hearing range during the night\n", L" %s%d hearing range during the night\n",
L" %s%d hearing range during the day\n", L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%% effectiveness to friendly approach\n", L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%% effectiveness to direct approach\n", L" %s%d%% effectiveness to direct approach\n",
+1
View File
@@ -8100,6 +8100,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% max CTH\n", L" %s%d%% max CTH\n",
L" %s%d hearing range during the night\n", L" %s%d hearing range during the night\n",
L" %s%d hearing range during the day\n", L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n",
L" %s%d%% effectiveness to friendly approach\n", L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%% effectiveness to direct approach\n", L" %s%d%% effectiveness to direct approach\n",
+1
View File
@@ -8100,6 +8100,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% de chance de toucher maximum\n", L" %s%d%% de chance de toucher maximum\n",
L" %s%d en audition pendant la nuit\n", L" %s%d en audition pendant la nuit\n",
L" %s%d en audition pendant la journée\n", L" %s%d en audition pendant la journée\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%% d'efficacité dans une approche amicale\n", L" %s%d%% d'efficacité dans une approche amicale\n",
L" %s%d%% d'efficacité dans une approche directe\n", L" %s%d%% d'efficacité dans une approche directe\n",
+1
View File
@@ -7927,6 +7927,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% max CTH\n", L" %s%d%% max CTH\n",
L" %s%d hearing range during the night\n", L" %s%d hearing range during the night\n",
L" %s%d hearing range during the day\n", L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%% effectiveness to friendly approach\n", L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%% effectiveness to direct approach\n", L" %s%d%% effectiveness to direct approach\n",
+1
View File
@@ -8109,6 +8109,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% max CTH\n", L" %s%d%% max CTH\n",
L" %s%d hearing range during the night\n", L" %s%d hearing range during the night\n",
L" %s%d hearing range during the day\n", L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%% effectiveness to friendly approach\n", L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%% effectiveness to direct approach\n", L" %s%d%% effectiveness to direct approach\n",
+1
View File
@@ -8127,6 +8127,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% max CTH\n", L" %s%d%% max CTH\n",
L" %s%d hearing range during the night\n", L" %s%d hearing range during the night\n",
L" %s%d hearing range during the day\n", L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%% effectiveness to friendly approach\n", L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%% effectiveness to direct approach\n", L" %s%d%% effectiveness to direct approach\n",
+1
View File
@@ -8105,6 +8105,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% max CTH\n", L" %s%d%% max CTH\n",
L" %s%d hearing range during the night\n", L" %s%d hearing range during the night\n",
L" %s%d hearing range during the day\n", L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%% effectiveness to friendly approach\n", L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%% effectiveness to direct approach\n", L" %s%d%% effectiveness to direct approach\n",
+1
View File
@@ -8117,6 +8117,7 @@ STR16 szBackgroundText_Value[]=
L" %s%d%% max CTH\n", L" %s%d%% max CTH\n",
L" %s%d hearing range during the night\n", L" %s%d hearing range during the night\n",
L" %s%d hearing range during the day\n", L" %s%d hearing range during the day\n",
L" %s%d effectivity at disarming traps\n", // TODO.Translate
L" %s%d%% effectiveness to friendly approach\n", L" %s%d%% effectiveness to friendly approach\n",
L" %s%d%% effectiveness to direct approach\n", L" %s%d%% effectiveness to direct approach\n",