mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Background additions:
- <no_male> and <no_female> prohibit specific backgrounds to show up on IMP generation - <cth_vs_creatures> modifies gun CTH when aiming at creatures - added wisdom stat modifier - Fix: maximum cth can never exceed 100 git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6359 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -491,6 +491,10 @@ void AssignBackgroundHelpText( UINT8 ubNumber, MOUSE_REGION* pMouseregion )
|
||||
// ability description
|
||||
for ( UINT8 i = 0; i < BACKGROUND_FLAG_MAX; ++i)
|
||||
{
|
||||
// some properties are hidden
|
||||
if ( ((UINT64)1 << i) & BACKGROUND_HIDDEN_FLAGS )
|
||||
continue;
|
||||
|
||||
if ( zBackground[ ubNumber ].uiFlags & ((UINT64)1 << i) )
|
||||
{
|
||||
swprintf(atStr, szBackgroundText_Flags[ i ] );
|
||||
@@ -589,6 +593,12 @@ BOOLEAN IsBackGroundAllowed( UINT8 ubNumber )
|
||||
if ( !ubNumber )
|
||||
return FALSE;
|
||||
|
||||
// some backgrounds are only allowed to specific genders. Set both to forbid a background from ever showing up in IMP creation (for merc-specific backgrounds)
|
||||
if ( fCharacterIsMale && zBackground[ ubNumber ].uiFlags & BACKGROUND_NO_MALE )
|
||||
return FALSE;
|
||||
else if ( !fCharacterIsMale && zBackground[ ubNumber ].uiFlags & BACKGROUND_NO_FEMALE )
|
||||
return FALSE;
|
||||
|
||||
if ( SkillsList[0] == HEAVY_WEAPONS_NT || SkillsList[1] == HEAVY_WEAPONS_NT || SkillsList[2] == HEAVY_WEAPONS_NT )
|
||||
{
|
||||
if ( zBackground[ ubNumber ].value[BG_ARTILLERY] > 0 )
|
||||
|
||||
@@ -129,6 +129,7 @@ enum {
|
||||
BG_MECHANICAL,
|
||||
BG_EXPLOSIVE_ASSIGN,
|
||||
BG_MEDICAL,
|
||||
BG_WISDOM,
|
||||
|
||||
// ap modifiers for non-sector related tasks
|
||||
BG_HEIGHT,
|
||||
@@ -181,6 +182,7 @@ enum {
|
||||
|
||||
// various
|
||||
BG_BONUS_BREACHINGCHARGE,
|
||||
BG_PERC_CTH_CREATURE,
|
||||
|
||||
BG_MAX,
|
||||
};
|
||||
@@ -196,7 +198,7 @@ typedef struct
|
||||
INT16 value[BG_MAX]; // property values
|
||||
} BACKGROUND_VALUES;
|
||||
|
||||
#define NUM_BACKGROUND 100
|
||||
#define NUM_BACKGROUND 200
|
||||
|
||||
extern BACKGROUND_VALUES zBackground[NUM_BACKGROUND];
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@ INT16 EffectiveWisdom( SOLDIERTYPE * pSoldier)
|
||||
|
||||
iEffWisdom = EffectStatForBeingDrunk( pSoldier, iEffWisdom );
|
||||
|
||||
iEffWisdom = (iEffWisdom * (100 + pSoldier->GetBackgroundValue(BG_WISDOM))) / 100;
|
||||
|
||||
return( (INT16) iEffWisdom );
|
||||
}
|
||||
|
||||
|
||||
@@ -401,10 +401,13 @@ enum
|
||||
|
||||
#define BACKGROUND_TRAPLEVEL 0x0000000000000010 //16 // trap level +1
|
||||
#define BACKGROUND_CORRUPTIONSPREAD 0x0000000000000020 //32 // spreads corruption to others - not used in trunk!
|
||||
//#define BACKGROUND_XENOPHOBIC 0x0000000000000040 //64 // arrogant towards others without this background
|
||||
//#define BACKGROUND_CAPITULATION 0x0000000000000080 //128 // if present, the team's surrender strength is higher
|
||||
#define BACKGROUND_NO_MALE 0x0000000000000040 //64 // background cannot be selected by males (IMP creation)
|
||||
#define BACKGROUND_NO_FEMALE 0x0000000000000080 //128 // background cannot be selected by females (IMP creation)
|
||||
|
||||
#define BACKGROUND_FLAG_MAX 6 // number of flagged backgrounds - keep this updated, or properties will get lost!
|
||||
#define BACKGROUND_FLAG_MAX 8 // number of flagged backgrounds - keep this updated, or properties will get lost!
|
||||
|
||||
// some properties are hidden (forbid background in MP creation)
|
||||
#define BACKGROUND_HIDDEN_FLAGS (BACKGROUND_NO_MALE|BACKGROUND_NO_FEMALE)
|
||||
|
||||
// Flugente: types of multi-turn actions
|
||||
enum
|
||||
|
||||
+18
-9
@@ -5181,14 +5181,15 @@ if (gGameExternalOptions.fUseNewCTHCalculation)
|
||||
|
||||
// apply bonus from traits
|
||||
// Flugente: moved trait modifiers into a member function
|
||||
if(gGameOptions.fNewTraitSystem)
|
||||
{
|
||||
UINT8 targetprofile = NOBODY;
|
||||
if ( pTarget && pTarget->ubProfile != NOBODY )
|
||||
targetprofile = pTarget->ubProfile;
|
||||
UINT8 targetprofile = NOBODY;
|
||||
if ( pTarget && pTarget->ubProfile != NOBODY )
|
||||
targetprofile = pTarget->ubProfile;
|
||||
|
||||
fAimModifier += pSoldier->GetTraitCTHModifier( usInHand, ubAimTime, targetprofile );
|
||||
}
|
||||
fAimModifier += pSoldier->GetTraitCTHModifier( usInHand, ubAimTime, targetprofile );
|
||||
|
||||
// Flugente: backgrounds
|
||||
if ( pTarget && pTarget->bTeam == CREATURE_TEAM )
|
||||
fAimModifier += pSoldier->GetBackgroundValue(BG_PERC_CTH_CREATURE);
|
||||
|
||||
// get aimbonus from target
|
||||
fAimModifier += CalcNewChanceToHitAimTargetBonus(pSoldier, pTarget, sGridNo, iRange, ubAimPos, fCantSeeTarget);
|
||||
@@ -5357,6 +5358,10 @@ else
|
||||
|
||||
iTraitModifier = pSoldier->GetTraitCTHModifier( usInHand, ubAimTime, targetprofile );
|
||||
|
||||
// Flugente: backgrounds
|
||||
if ( pTarget && pTarget->bTeam == CREATURE_TEAM )
|
||||
iTraitModifier += pSoldier->GetBackgroundValue(BG_PERC_CTH_CREATURE);
|
||||
|
||||
// SHOOTING AT SAME TARGET AGAIN
|
||||
if (sGridNo == pSoldier->sLastTarget )
|
||||
iBaseModifier += (FLOAT)gGameCTHConstants.BASE_SAME_TARGET;
|
||||
@@ -6088,7 +6093,7 @@ else
|
||||
|
||||
// Impose global limits.
|
||||
// Flugente: backgrounds
|
||||
iChance = min(iChance, gGameExternalOptions.ubMaximumCTH + (UINT8)(pSoldier->GetBackgroundValue(BG_PERC_CTH_MAX)) );
|
||||
iChance = min(iChance, min(100, gGameExternalOptions.ubMaximumCTH + (UINT8)(pSoldier->GetBackgroundValue(BG_PERC_CTH_MAX))) );
|
||||
iChance = __max(iChance, gGameExternalOptions.ubMinimumCTH);
|
||||
|
||||
return (iChance);
|
||||
@@ -6920,6 +6925,10 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
|
||||
targetprofile = pTarget->ubProfile;
|
||||
|
||||
iChance += pSoldier->GetTraitCTHModifier( usInHand, ubAimTime, targetprofile );
|
||||
|
||||
// Flugente: backgrounds
|
||||
if ( pTarget && pTarget->bTeam == CREATURE_TEAM )
|
||||
iChance += pSoldier->GetBackgroundValue(BG_PERC_CTH_CREATURE);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -7452,7 +7461,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
|
||||
// iChance = MAXCHANCETOHIT;
|
||||
|
||||
// Flugente: backgrounds
|
||||
iChance = min(iChance, gGameExternalOptions.ubMaximumCTH + (UINT8)(pSoldier->GetBackgroundValue(BG_PERC_CTH_MAX)) );
|
||||
iChance = min(iChance, min(100, gGameExternalOptions.ubMaximumCTH + (UINT8)(pSoldier->GetBackgroundValue(BG_PERC_CTH_MAX))) );
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha
|
||||
strcmp(name, "dexterity") == 0 ||
|
||||
strcmp(name, "mechanical") == 0 ||
|
||||
strcmp(name, "medical") == 0 ||
|
||||
strcmp(name, "wisdom") == 0 ||
|
||||
strcmp(name, "explosives") == 0 ||
|
||||
strcmp(name, "leadership") == 0 ||
|
||||
strcmp(name, "marksmanship") == 0 ||
|
||||
@@ -116,12 +117,15 @@ backgroundStartElementHandle(void *userData, const XML_Char *name, const XML_Cha
|
||||
strcmp(name, "approach_threaten") == 0 ||
|
||||
strcmp(name, "approach_recruit") == 0 ||
|
||||
strcmp(name, "breachingcharge") == 0 ||
|
||||
strcmp(name, "cth_vs_creatures") == 0 ||
|
||||
strcmp(name, "druguse") == 0 ||
|
||||
strcmp(name, "xenophobic") == 0 ||
|
||||
strcmp(name, "corruptionspread") == 0 ||
|
||||
strcmp(name, "level_underground") == 0 ||
|
||||
strcmp(name, "scrounging") == 0 ||
|
||||
strcmp(name, "traplevel") == 0 ))
|
||||
strcmp(name, "traplevel") == 0 ||
|
||||
strcmp(name, "no_male") == 0 ||
|
||||
strcmp(name, "no_female") == 0 ))
|
||||
{
|
||||
pData->curElement = ELEMENT_PROPERTY;
|
||||
|
||||
@@ -294,6 +298,11 @@ backgroundEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_MEDICAL] = min(XML_BACKGROUND_STAT_MAX, max(-XML_BACKGROUND_STAT_MAX, (INT8) atol(pData->szCharData) ));
|
||||
}
|
||||
else if(strcmp(name, "wisdom") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_WISDOM] = min(XML_BACKGROUND_STAT_MAX, max(-XML_BACKGROUND_STAT_MAX, (INT8) atol(pData->szCharData) ));
|
||||
}
|
||||
else if(strcmp(name, "explosives") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
@@ -474,6 +483,11 @@ backgroundEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_BONUS_BREACHINGCHARGE] = min(100, max(-100, (INT16) atol(pData->szCharData) ));
|
||||
}
|
||||
else if(strcmp(name, "cth_vs_creatures") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.value[BG_PERC_CTH_CREATURE] = min(20, max(-20, (INT16) atol(pData->szCharData) ));
|
||||
}
|
||||
else if(strcmp(name, "druguse") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
@@ -504,6 +518,16 @@ backgroundEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.uiFlags |= (UINT16) atol(pData->szCharData) ? BACKGROUND_TRAPLEVEL : 0;
|
||||
}
|
||||
else if(strcmp(name, "no_male") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.uiFlags |= (UINT16) atol(pData->szCharData) ? BACKGROUND_NO_MALE : 0;
|
||||
}
|
||||
else if(strcmp(name, "no_female") == 0)
|
||||
{
|
||||
pData->curElement = ELEMENT;
|
||||
pData->curBackground.uiFlags |= (UINT16) atol(pData->szCharData) ? BACKGROUND_NO_FEMALE : 0;
|
||||
}
|
||||
|
||||
pData->maxReadDepth--;
|
||||
}
|
||||
|
||||
@@ -7614,6 +7614,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
@@ -7636,6 +7638,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7682,6 +7685,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //CHINESE
|
||||
|
||||
@@ -7613,6 +7613,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
@@ -7635,6 +7637,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7681,6 +7684,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //DUTCH
|
||||
|
||||
@@ -7598,6 +7598,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
STR16 szBackgroundText_Value[]=
|
||||
@@ -7619,6 +7621,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7665,6 +7668,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //ENGLISH
|
||||
|
||||
@@ -7597,6 +7597,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
@@ -7619,6 +7621,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7665,6 +7668,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //FRENCH
|
||||
|
||||
@@ -7422,6 +7422,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
@@ -7444,6 +7446,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7490,6 +7493,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //GERMAN
|
||||
|
||||
@@ -7600,8 +7600,11 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
STR16 szBackgroundText_Value[]=
|
||||
{
|
||||
L" %s%d%% APs in polar sectors\n",
|
||||
@@ -7621,6 +7624,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7667,6 +7671,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //ITALIAN
|
||||
|
||||
@@ -7619,6 +7619,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
@@ -7641,6 +7643,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7687,6 +7690,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //POLISH
|
||||
|
||||
@@ -7599,6 +7599,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
@@ -7621,6 +7623,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7667,6 +7670,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //RUSSIAN
|
||||
|
||||
@@ -7617,6 +7617,8 @@ STR16 szBackgroundText_Flags[]=
|
||||
|
||||
L" +1 traplevel to planted bombs\n",
|
||||
L" spreads corruption to nearby mercs\n",
|
||||
L" female only", // won't show up, text exists for compatibility reasons
|
||||
L" male only", // won't show up, text exists for compatibility reasons
|
||||
};
|
||||
|
||||
// TODO.Translate
|
||||
@@ -7639,6 +7641,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% mechanical stat\n",
|
||||
L" %s%d%% explosives stat\n",
|
||||
L" %s%d%% medical stat\n",
|
||||
L" %s%d%% wisdom stat\n",
|
||||
|
||||
L" %s%d%% APs on rooftops\n",
|
||||
L" %s%d%% APs needed to swim\n",
|
||||
@@ -7685,6 +7688,7 @@ STR16 szBackgroundText_Value[]=
|
||||
L" %s%d%% effectiveness to recruit approach\n",
|
||||
|
||||
L" %s%d%% chance of success with door breaching charges\n",
|
||||
L" %s%d%% cth with firearms against creatures\n",
|
||||
};
|
||||
|
||||
#endif //TAIWANESE
|
||||
|
||||
Reference in New Issue
Block a user