diff --git a/GameSettings.cpp b/GameSettings.cpp index 90f37bc3f..e809abbac 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -2383,6 +2383,7 @@ void LoadSkillTraitsExternalSettings() gSkillTraitValues.ubGSPercentReadyPistolsReduction = iniReader.ReadInteger("Gunslinger","PERCENT_AP_READY_PISTOLS_REDUCTION", 15, 0, 50); gSkillTraitValues.ubGSRealoadSpeedHandgunsBonus = iniReader.ReadInteger("Gunslinger","RELOAD_SPEED_HANDGUNS_BONUS", 25, 0, 45); gSkillTraitValues.ubGSAimClicksAdded = iniReader.ReadInteger("Gunslinger","POSSIBLE_AIM_CLICK_ADDED_HANDGUNS", 1, 0, 3); + gSkillTraitValues.fCanFanTheHammer = iniReader.ReadBoolean( "Gunslinger", "CAN_FAN_THE_HAMMER", TRUE ); // MARTIAL ARTS gSkillTraitValues.ubMAPunchAPsReduction = iniReader.ReadInteger("Martial Arts","PUNCH_APS_REDUCTION", 15, 0, 50); diff --git a/GameSettings.h b/GameSettings.h index ec2adb2c0..daefd89fd 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -1731,6 +1731,7 @@ typedef struct UINT8 ubGSPercentReadyPistolsReduction; UINT8 ubGSRealoadSpeedHandgunsBonus; UINT8 ubGSAimClicksAdded; + BOOLEAN fCanFanTheHammer; // MARTIAL ARTS UINT8 ubMABonusCtHBareHands; diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index a29ba2e21..b601460d4 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -7484,6 +7484,13 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[19], gSkillTraitValues.sSNFocusInterruptBonus ); wcscat( apStr, atStr ); } + + // Flugente: can we fan the hammer on certain guns (it's effectively a hidden mode of revolvers)? + if ( gSkillTraitValues.fCanFanTheHammer ) + { + swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[10] ); + wcscat( apStr, atStr ); + } break; } case MARTIAL_ARTS_NT: diff --git a/Tactical/Interface Enhanced.cpp b/Tactical/Interface Enhanced.cpp index 4131959da..26a4be8c4 100644 --- a/Tactical/Interface Enhanced.cpp +++ b/Tactical/Interface Enhanced.cpp @@ -85,7 +85,7 @@ UINT32 guiItemInfoAdvancedIcon; UINT32 guiItemInfoWH40KIcon; // HEADROCK HAM 4: New tooltip regions for UDB replace the old regions. -#define NUM_UDB_FASTHELP_REGIONS 102 +#define NUM_UDB_FASTHELP_REGIONS 103 MOUSE_REGION gUDBFasthelpRegions[NUM_UDB_FASTHELP_REGIONS]; extern INV_DESC_STATS gMoneyStats[]; @@ -1476,7 +1476,7 @@ void InternalInitEDBTooltipRegion( OBJECTTYPE * gpItemDescObject, UINT32 guiCurr // with the new Laser Performance Bonus we need to display a different text for laser on a weapons general tab if ( cnt == 6 && (gGameCTHConstants.LASER_PERFORMANCE_BONUS_HIP + gGameCTHConstants.LASER_PERFORMANCE_BONUS_IRON + gGameCTHConstants.LASER_PERFORMANCE_BONUS_SCOPE != 0) ) - swprintf( pStr, L"%s%s", szUDBAdvStatsTooltipText[64], szUDBGenWeaponsStatsExplanationsTooltipText[ cnt ]); + swprintf( pStr, L"%s%s", szUDBAdvStatsTooltipText[ 64 ], szUDBGenWeaponsStatsExplanationsTooltipText[ cnt ]); else if ( cnt == 10 && gGameExternalOptions.fAdvRepairSystem && !gSkillTraitValues.fTETraitsCanRestoreItemThreshold ) swprintf( pStr, L"%s%s", szUDBGenWeaponsStatsTooltipText[ cnt ], szUDBGenWeaponsStatsExplanationsTooltipText[ 22 ]); else @@ -3232,7 +3232,7 @@ void InternalInitEDBTooltipRegion( OBJECTTYPE * gpItemDescObject, UINT32 guiCurr } else { - swprintf( pStr, L"%s%s", szUDBAdvStatsTooltipText[ 65 ], szUDBAdvStatsExplanationsTooltipText[ 64 ]); + swprintf( pStr, L"%s%s", szUDBAdvStatsTooltipText[ 65 ], szUDBAdvStatsExplanationsTooltipText[ 65 ]); } SetRegionFastHelpText( &(gUDBFasthelpRegions[ iFirstDataRegion + (cnt-sFirstLine) ]), pStr ); MSYS_EnableRegion( &gUDBFasthelpRegions[ iFirstDataRegion + (cnt-sFirstLine) ] ); @@ -4069,6 +4069,21 @@ void InternalInitEDBTooltipRegion( OBJECTTYPE * gpItemDescObject, UINT32 guiCurr } } + ///////////////////// FANTHEHAMMER + if ( Item[gpItemDescObject->usItem].usItemClass & ( IC_GUN | IC_LAUNCHER ) && gGameOptions.fNewTraitSystem && gSkillTraitValues.fCanFanTheHammer ) + { + if ( !fDrawGenIndexes ) + fDrawGenIndexes = ++cnt; // new index line here? + + if ( cnt >= sFirstLine && cnt < sLastLine ) + { + swprintf( pStr, L"%s%s", szUDBAdvStatsTooltipText[ 66 ], szUDBAdvStatsExplanationsTooltipText[ 66 ] ); + SetRegionFastHelpText( &( gUDBFasthelpRegions[iFirstDataRegion + ( cnt - sFirstLine )] ), pStr ); + MSYS_EnableRegion( &gUDBFasthelpRegions[iFirstDataRegion + ( cnt - sFirstLine )] ); + } + ++cnt; + } + if ( UsingFoodSystem() && Item[gpItemDescObject->usItem].foodtype > 0 ) { if (!fDrawGenIndexes) @@ -5740,6 +5755,17 @@ void DrawAdvancedStats( OBJECTTYPE * gpItemDescObject ) } } + ///////////////////// FANTHEHAMMER + if ( gGameOptions.fNewTraitSystem && gSkillTraitValues.fCanFanTheHammer && + ( ( Item[gpItemDescObject->usItem].usItemClass & IC_BOBBY_GUN ) || ( fComparisonMode && ( Item[gpComparedItemDescObject->usItem].usItemClass & IC_BOBBY_GUN ) ) ) ) + { + if ( cnt >= sFirstLine && cnt < sLastLine ) + { + BltVideoObjectFromIndex( guiSAVEBUFFER, guiItemInfoAdvancedIcon, 65, gItemDescAdvRegions[cnt - sFirstLine][0].sLeft + sOffsetX, gItemDescAdvRegions[cnt - sFirstLine][0].sTop + sOffsetY, VO_BLT_SRCTRANSPARENCY, NULL ); + } + ++cnt; + } + if ( UsingFoodSystem() ) { if ( ( Item[gpItemDescObject->usItem].foodtype > 0 ) || @@ -14029,6 +14055,46 @@ void DrawAdvancedValues( OBJECTTYPE *gpItemDescObject ) } } + ///////////////////// FANTHEHAMMMER + if ( gGameOptions.fNewTraitSystem && gSkillTraitValues.fCanFanTheHammer && + ( ( Item[gpItemDescObject->usItem].usItemClass & ( IC_GUN | IC_LAUNCHER ) ) || ( fComparisonMode && Item[gpComparedItemDescObject->usItem].usItemClass & ( IC_GUN | IC_LAUNCHER ) ) ) ) + { + if ( !fDrawGenIndexes ) + fDrawGenIndexes = ++cnt; //insert Indexes here? + + if ( cnt >= sFirstLine && cnt < sLastLine ) + { + // Set Y coordinates + sTop = gItemDescAdvRegions[cnt - sFirstLine][1].sTop; + sHeight = gItemDescAdvRegions[cnt - sFirstLine][1].sBottom - sTop; + + BOOL a = Weapon[gpItemDescObject->usItem].fBurstOnlyByFanTheHammer; + BOOL b = ( fComparisonMode && Weapon[gpComparedItemDescObject->usItem].fBurstOnlyByFanTheHammer); + + SetFontForeground( 5 ); + sLeft = gItemDescAdvRegions[cnt - sFirstLine][1].sLeft; + sWidth = gItemDescAdvRegions[cnt - sFirstLine][1].sRight - sLeft; + + if ( fComparisonMode ) + { + SetFontForeground( a ? ITEMDESC_FONTPOSITIVE : ITEMDESC_FONTNEGATIVE ); + + swprintf( pStr, L"%s/%s", a ? "Y" : "N", b ? "Y" : "N" ); + } + else + { + SetFontForeground( 5 ); + + swprintf( pStr, L"%s", a ? "Y" : "N" ); + } + + FindFontCenterCoordinates( sLeft, sTop, sWidth, sHeight, pStr, BLOCKFONT2, &usX, &usY ); + mprintf( usX, usY, pStr ); + } + + ++cnt; + } + ////////////////////// FOOD if ( UsingFoodSystem() ) { diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 024b39604..53965c5cb 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -442,7 +442,8 @@ weaponStartElementHandle(void *userData, const XML_Char *name, const XML_Char ** strcmp(name, "usOverheatingJamThreshold") == 0 || // Flugente strcmp(name, "usOverheatingDamageThreshold") == 0 || // Flugente strcmp(name, "usOverheatingSingleShotTemperature") == 0 || // Flugente - strcmp(name, "HeavyGun") == 0)) // SANDRO - cannot be shouldered while standing + strcmp(name, "HeavyGun") == 0 || // SANDRO - cannot be shouldered while standing + strcmp(name, "fBurstOnlyByFanTheHammer" ) == 0)) { pData->curElement = WEAPON_ELEMENT_WEAPON_PROPERY; @@ -727,6 +728,11 @@ weaponEndElementHandle(void *userData, const XML_Char *name) pData->curElement = WEAPON_ELEMENT_WEAPON; pData->curWeapon.HeavyGun = (BOOLEAN) atof(pData->szCharData); } + else if ( strcmp( name, "fBurstOnlyByFanTheHammer" ) == 0 ) + { + pData->curElement = WEAPON_ELEMENT_WEAPON; + pData->curWeapon.fBurstOnlyByFanTheHammer = (BOOLEAN)atof( pData->szCharData ); + } pData->maxReadDepth--; } @@ -904,6 +910,7 @@ BOOLEAN WriteWeaponStats() FilePrintf(hFile,"\t\t%4.2f\r\n", Weapon[cnt].usOverheatingDamageThreshold); FilePrintf(hFile,"\t\t%4.2f\r\n", Weapon[cnt].usOverheatingSingleShotTemperature); FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].HeavyGun); + FilePrintf(hFile,"\t\t%d\r\n", Weapon[cnt].fBurstOnlyByFanTheHammer ); FilePrintf(hFile,"\t\r\n"); @@ -8914,6 +8921,20 @@ BOOLEAN IsGunBurstCapable(OBJECTTYPE* pObject, BOOLEAN fNotify, SOLDIERTYPE* pSo if ( GetShotsPerBurst(pObject) > 0 ) { fCapable = TRUE; + + // Flugente: if we only get burst capability by fanning the hammer, check whether we can use that in the first place + if ( gGameOptions.fNewTraitSystem && gSkillTraitValues.fCanFanTheHammer && Weapon[pObject->usItem].fBurstOnlyByFanTheHammer ) + { + fCapable = FALSE; + + if ( pSoldier && + pSoldier->bScopeMode == USE_ALT_WEAPON_HOLD && + NUM_SKILL_TRAITS( pSoldier, GUNSLINGER_NT ) > 0 && + !pSoldier->inv[SECONDHANDPOS].exists() ) + { + fCapable = TRUE; + } + } } } } @@ -9565,6 +9586,15 @@ void ChangeScopeMode( SOLDIERTYPE * pSoldier, INT32 iTrgGridNo ) pSoldier->aiData.bShownAimTime = 0; } + // Flugente: test whether the change to scope mode invalidates our firing mode + if ( Weapon[pSoldier->inv[HANDPOS].usItem].fBurstOnlyByFanTheHammer && pSoldier->bWeaponMode == WM_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_UB_BURST ) + { + if ( !IsGunWeaponModeCapable( &pSoldier->inv[HANDPOS], static_cast( pSoldier->bWeaponMode ), pSoldier ) ) + { + ChangeWeaponMode( pSoldier ); + } + } + DirtyMercPanelInterface( pSoldier, DIRTYLEVEL2 ); gfUIForceReExamineCursorData = TRUE; } diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 5380a827a..21b2caca9 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -382,13 +382,17 @@ typedef struct UINT8 ubHandling; // CHRISL HAM 4: This value replaces ubReadyTime for determining a weapons base handling characteristics. - // Flugente FTW 1 + // Flugente FLOAT usOverheatingJamThreshold; // if a gun's temperature is above this treshold, it is increasingly prone to jamming FLOAT usOverheatingDamageThreshold; // if a gun is fired while its temperature is above this value, it degrades much faster FLOAT usOverheatingSingleShotTemperature; // a single shot raises a gun's temperature by this amount BOOLEAN HeavyGun; // SANDRO - a gun with this cannot be shouldered in standing position, part of shooting from hip feature + // Flugente: if the wielder possesses the 'GUNSLINGER_NT' trait, is using alternate hold scope mode, and has the second hand free, this gun can be used in burst mode + // this is intended for guns that normally don't possess burst mode, like revolvers + BOOLEAN fBurstOnlyByFanTheHammer; + } WEAPONTYPE; typedef struct { diff --git a/Utils/Text.h b/Utils/Text.h index e1b2691ff..8e196c72d 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -757,9 +757,9 @@ extern STR16 szUDBGenCommonStatsTooltipText[ 3 ]; // silversurfer new for i extern STR16 szUDBGenCommonStatsExplanationsTooltipText[ 3 ]; // silversurfer new for items that don't fit the other categories extern STR16 szUDBGenSecondaryStatsTooltipText[]; // Flugente Food System: 26 -> 28 external feeding: 28->30 JMich_SkillsModifiers: 31 for Defusal kit - covert item: 31->32 silversurfer more tags: 32->37 extern STR16 szUDBGenSecondaryStatsExplanationsTooltipText[]; // Flugente Food System: 26 -> 28 external feeding: 28->30 JMich_SkillsModifiers: 31 for Defusal kit - covert item: 31->32 silversurfer more tags: 32->37 -extern STR16 szUDBAdvStatsTooltipText[ 66 ]; // Flugente Overheating Weapons: 48->56 poison: 56->57 dirt: 57->58 food:58->64 silversurfer Best Laser Range:64->65 silversurfer PercentRecoilModifier: 66 -extern STR16 szUDBAdvStatsExplanationsTooltipText[ 65 ]; // Flugente Overheating Weapons: 48->56 poison: 56->57 dirt: 57->58 food:58->64 silversurfer Best Laser Range:64->65 silversurfer PercentRecoilModifier: 65 -extern STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[ 53 ]; // Flugente Overheating Weapons: 48->52 silversurfer Best Laser Range:64->65 silversurfer PercentRecoilModifier: 53 +extern STR16 szUDBAdvStatsTooltipText[]; +extern STR16 szUDBAdvStatsExplanationsTooltipText[]; +extern STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]; // Headrock: End Externs extern STR16 sKeyDescriptionStrings[2]; diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index 10e49fdf7..11afed45a 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -8566,6 +8566,7 @@ STR16 szUDBAdvStatsTooltipText[]= L"|延|迟|修|正",//L"|D|e|c|a|y |M|o|d|i|f|i|e|r", L"|最|佳|激|光|距|离",//L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e", L"|后|坐|修|正|比|例",//L"|P|e|r|c|e|n|t |R|e|c|o|i|l |M|o|d|i|f|i|e|r", // 65 + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. @@ -8635,7 +8636,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \n每次会吃掉多少。\n百分比单位。\n \n该数值越低越好。", // L"\n \nThe percentage of the item\nthat will be eaten at once.\n \nLower is better.", L"\n \n可以改变相应量士气。\n \n该数值越高越好。", // L"\n \nMorale is adjusted by this amount.\n \nHigher is better.", L"\n \n这个物品随着时间推移而腐败。\n超过50%腐败会产生毒性。\n这是食物的霉变率。\n \n该数值越低越好。", // L"\n \nThis item becomes stale over time.\nIf more then 50% is molded it becomes poisoneous.\nThis is the rate at which mold is generated.\nLower is better.", - L"\n \n当该附件装配到可以点射及自动射击的远程武\n器上时,会按照所述比例修正武器的后座力。\n后座力越小,枪口在瞄准目标扫射时越稳定。\n该值越低越好。",//L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"", + L"\n \n当该附件装配到可以点射及自动射击的远程武\n器上时,会按照所述比例修正武器的后座力。\n后座力越小,枪口在瞄准目标扫射时越稳定。\n该值越低越好。",//L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", // TODO.Translate }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index d0156c199..a066d3ffe 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -8582,6 +8582,7 @@ STR16 szUDBAdvStatsTooltipText[]= L"|D|e|c|a|y |M|o|d|i|f|i|e|r",// TODO.Translate L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e",// TODO.Translate L"|P|e|r|c|e|n|t |R|e|c|o|i|l |M|o|d|i|f|i|e|r", // 65 + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. @@ -8651,7 +8652,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nThe percentage of the item\nthat will be eaten at once.\n \nLower is better.", // TODO.Translate L"\n \nMorale is adjusted by this amount.\n \nHigher is better.", // TODO.Translate L"\n \nThis item becomes stale over time.\nIf more then 50% is molded it becomes poisoneous.\nThis is the rate at which mold is generated.\nLower is better.", // TODO.Translate - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", // TODO.Translate }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 2c273c1a2..5ab0a3d82 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -8566,6 +8566,7 @@ STR16 szUDBAdvStatsTooltipText[]= L"|D|e|c|a|y |M|o|d|i|f|i|e|r", L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e", L"|P|e|r|c|e|n|t |R|e|c|o|i|l |M|o|d|i|f|i|e|r", // 65 + L"|F|a|n |t|h|e |H|a|m|m|e|r", }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. @@ -8635,7 +8636,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nThe percentage of the item\nthat will be eaten at once.\n \nLower is better.", L"\n \nMorale is adjusted by this amount.\n \nHigher is better.", L"\n \nThis item becomes stale over time.\nIf more then 50% is molded it becomes poisoneous.\nThis is the rate at which mold is generated.\nLower is better.", - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 42568c3f9..6c1b84b9f 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -8569,6 +8569,7 @@ STR16 szUDBAdvStatsTooltipText[]= L"|F|a|c|t|e|u|r |d|e |P|é|r|e|m|p|t|i|o|n", L"|P|o|r|t|é|e |O|p|t|i|m|a|l|e |d|u |L|a|s|e|r", L"|F|a|c|t|e|u|r |d|u |R|e|c|u|l |P|o|u|r |c|e|n|t", // 65 + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. @@ -8637,7 +8638,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nLe pourcentage d'aliment consommé par utilisation.\n \nValeur faible recommandée.", L"\n \nLe moral est modifié de cette valeur.\n \nValeur élevée recommandée.", L"\n \nCet aliment pourrit au fil du temps.\nAu-dessus de 50 pour cent, il devient\nun poison. Il s'agit de la vitesse à\nlaquelle la moisissure est générée.\n \nValeur faible recommandée.", - L"\n \nLorsqu'il est attaché à une arme qui a le mode\nrafale ou auto, cet objet modifie le recul de\nl'arme par le pourcentage indiqué. Réduire le\nrecul permet de mieux garder la bouche de l'arme\npointée sur la cible lors d'une rafale.\n \nValeur faible recommandée.", + L"", + L"\n \nLorsqu'il est attaché à une arme qui a le mode\nrafale ou auto, cet objet modifie le recul de\nl'arme par le pourcentage indiqué. Réduire le\nrecul permet de mieux garder la bouche de l'arme\npointée sur la cible lors d'une rafale.\n \nValeur faible recommandée.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", // TODO.Translate }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 8be3a4cf2..36b0a1cd8 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -8398,10 +8398,11 @@ STR16 szUDBAdvStatsTooltipText[]= L"|S|c|h|i|m|m|e|l |R|a|t|e", L"|B|e|s|t|e |L|a|s|e|r |R|e|i|c|h|w|e|i|t|e", L"|P|r|o|z|e|n|t|u|a|l|e|r |R|ü|c|k|s|t|o|ß |M|o|d|i|f|i|k|a|t|o|r", // 65 + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. -STR16 szUDBAdvStatsExplanationsTooltipText[]= +STR16 szUDBAdvStatsExplanationsTooltipText[] = { L"\n \nWenn befestigt an einer Fernwaffe dieser Gegenstand verändert den Genauigkeitswert.\n \nEine erhöhte Genauigkeit lässt die Schusswaffe Ziele auf eine größere Entfernung öfter treffen,\nangenommen es wird auch gut gezielt.\n \nMaßstab: -100 bis +100.\nHöher ist besser.", L"\n \nDieser Gegenstand verändert die Genauigkeit\nfür jede Art von Feuermodus für diese Fernwaffe um den angegebenen Wert.\n \nMaßstab: -100 bis +100.\nHöher ist besser.", @@ -8441,11 +8442,11 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nDieser Gegenstand beeinflusst die Tarnung\nin Schneegebieten, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", L"\n \nDieser Gegenstand beeinflusst das Schleichen\n, wenn er getragen oder an einen\ngetragenen Gegenstand angebracht wird.\n \nHöher ist besser.", L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Hörweite\num die angegebenen Prozent.\n \nEin positiver Bonus ermöglicht das Hören von Geräuschen\nauf größere Distanzen.\n \nHöher ist besser.", - L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser generelle Sichtweitenmodifikator funktioniert bei allen Lichtverhältnissen.\nHöher ist besser.", - L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Nacht-Sichtweitenmodifikator funktioniert nur\nwenn die Umgebungsbeleuchtung niedrig ist.\n \nHöher ist besser.", - L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Tag-Sichtweitenmodifikator funktioniert nur\nwenn die Umgebungsbeleuchtung überdurchschnittlich hoch ist.\n \nHöher ist besser.", - L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Helligkeits-Sichtweitenmodifikator funktioniert nur\nwenn die Umgebungsbeleuchtung extrem hoch und grell ist.\n \nHöher ist besser.", - L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Höhlen-Sichtweitenmodifikator funktioniert nur\nim Dunkeln und auch nur unter Tage.\n \nHöher ist besser.", + L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser generelle Sichtweitenmodifikator funktioniert bei allen Lichtverhältnissen.\nHöher ist besser.", + L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Nacht-Sichtweitenmodifikator funktioniert nur\nwenn die Umgebungsbeleuchtung niedrig ist.\n \nHöher ist besser.", + L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Tag-Sichtweitenmodifikator funktioniert nur\nwenn die Umgebungsbeleuchtung überdurchschnittlich hoch ist.\n \nHöher ist besser.", + L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Helligkeits-Sichtweitenmodifikator funktioniert nur\nwenn die Umgebungsbeleuchtung extrem hoch und grell ist.\n \nHöher ist besser.", + L"\n \nWenn dieser Gegenstand getragen, oder an einem getragenen\nGegenstand angebracht, verändert dies die Sichtweite\num die angegebenen Prozent.\n \nDieser Höhlen-Sichtweitenmodifikator funktioniert nur\nim Dunkeln und auch nur unter Tage.\n \nHöher ist besser.", L"\n \nDieser Gegenstand beeinflusst die Sichtbreite,\nwenn er getragen oder\nan einen getragenen Gegenstand angebracht wird.\n \nHöher ist besser.", L"\n \nDie Fähigkeit des Schützen Rückstoß\nwährend Feuerstoß-/Autofeuersalven zu bewältigen.\n \nHöher ist besser.", L"\n \nDie Fähigkeit des Schützen einzuschätzen\nwieviel Kraft er während Feuerstoß-/Autofeuersalven\nbenötigt um den Rückstoß auszugleichen.\n \nNiedriger ist besser.", @@ -8467,7 +8468,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nProzentsatz des Gegenstandes der mit einem\n Bissen aufgebraucht wird.\n \nWeniger ist besser.", L"\n \nDie Moral wird um diese Zahl modifiziert.\n \nHöher ist besser.", L"\n \nDer Gegenstand wird mit der Zeit schlecht.\nIst mehr als 50% verschimmelt wird er giftig.\nDies ist die Rate in der Schimmel entsteht.\n \nNiedriger ist besser.", - L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand den Rückstoß um den genannten Prozentwert.\n\n Ein geringerer Rückstoß macht es einfacher, die Waffe im Dauerfeuer auf das Ziel gerichtet zu halten.\n \nNiedriger ist besser.", + L"", + L"\n \nWenn befestigt an Feuerstoß oder Dauerfeuer fähigen Fernwaffen\nverändert dieser Gegenstand den Rückstoß um den genannten Prozentwert.\n\n Ein geringerer Rückstoß macht es einfacher, die Waffe im Dauerfeuer auf das Ziel gerichtet zu halten.\n \nNiedriger ist besser.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", // TODO.Translate }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index 690bacb76..4cd841726 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -8572,6 +8572,7 @@ STR16 szUDBAdvStatsTooltipText[]= L"|D|e|c|a|y |M|o|d|i|f|i|e|r",// TODO.Translate L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e",// TODO.Translate L"|P|e|r|c|e|n|t |R|e|c|o|i|l |M|o|d|i|f|i|e|r", // 65 + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. @@ -8641,7 +8642,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nThe percentage of the item\nthat will be eaten at once.\n \nLower is better.", // TODO.Translate L"\n \nMorale is adjusted by this amount.\n \nHigher is better.", // TODO.Translate L"\n \nThis item becomes stale over time.\nIf more then 50% is molded it becomes poisoneous.\nThis is the rate at which mold is generated.\nLower is better.", // TODO.Translate - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", // TODO.Translate }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= diff --git a/Utils/_Ja25ChineseText.cpp b/Utils/_Ja25ChineseText.cpp index f157c6c98..0cdbc569d 100644 --- a/Utils/_Ja25ChineseText.cpp +++ b/Utils/_Ja25ChineseText.cpp @@ -169,6 +169,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"手枪、冲锋手枪和左轮装填弹药所需行动点 -%d%s \n",// L"-%d%s APs needed to reload pistols, machine pistols and revolvers\n", L"手枪、左轮和冲锋手枪的精确瞄准次数增加%d次 \n",// L"Adds %d more aim click for pistols, machine pistols and revolvers\n", L"手枪、左轮和冲锋手枪的精确瞄准次数增加%d次 \n",// L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_Ja25DutchText.cpp b/Utils/_Ja25DutchText.cpp index f850e1019..985b0df09 100644 --- a/Utils/_Ja25DutchText.cpp +++ b/Utils/_Ja25DutchText.cpp @@ -169,6 +169,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"-%d%s APs to reload pistols, machine pistols and revolvers\n", L"Adds %d more aim click for pistols, machine pistols and revolvers\n", L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_Ja25EnglishText.cpp b/Utils/_Ja25EnglishText.cpp index 26fc6ce7c..3bde099ca 100644 --- a/Utils/_Ja25EnglishText.cpp +++ b/Utils/_Ja25EnglishText.cpp @@ -169,6 +169,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"-%d%s APs to reload pistols, machine pistols and revolvers\n", L"Adds %d more aim click for pistols, machine pistols and revolvers\n", L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n", + L"Can fan the hammer with revolvers\n", }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_Ja25FrenchText.cpp b/Utils/_Ja25FrenchText.cpp index 151a30607..afa8d61d1 100644 --- a/Utils/_Ja25FrenchText.cpp +++ b/Utils/_Ja25FrenchText.cpp @@ -170,6 +170,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"-%d%s du nombre de PA nécessaire pour recharger un pistolet, pistolet automatique ou un revolver\n", L"Ajoute un niveau de visée pour les pistolets, les pistolets automatiques ou les revolvers\n", L"Ajoute %d niveaux de visée pour les pistolets, les pistolets automatiques ou les revolvers\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_Ja25GermanText.cpp b/Utils/_Ja25GermanText.cpp index 638b9ffbf..892ba2fe3 100644 --- a/Utils/_Ja25GermanText.cpp +++ b/Utils/_Ja25GermanText.cpp @@ -169,6 +169,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"-%d%s APs benötigt um halb- und vollautomatische Pistolen sowie Revolver nachzuladen\n", L"Gibt für halb- und vollautomatische Pistolen sowie Revolver einen weiteren Zielklick\n", L"%d weiteren Zielklick für halb- und vollautomatische Pistolen sowie Revolver\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_Ja25ItalianText.cpp b/Utils/_Ja25ItalianText.cpp index 8d5675c68..214a1fb71 100644 --- a/Utils/_Ja25ItalianText.cpp +++ b/Utils/_Ja25ItalianText.cpp @@ -167,6 +167,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"-%d%s APs to reload pistols, machine pistols and revolvers\n", L"Adds %d more aim click for pistols, machine pistols and revolvers\n", L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_Ja25PolishText.cpp b/Utils/_Ja25PolishText.cpp index 970ebaa54..1f52c5d02 100644 --- a/Utils/_Ja25PolishText.cpp +++ b/Utils/_Ja25PolishText.cpp @@ -169,6 +169,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"-%d%s APs to reload pistols, machine pistols and revolvers\n", L"Adds %d more aim click for pistols, machine pistols and revolvers\n", L"Adds %d more aim clicks for pistols, machine pistols and revolvers\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_Ja25RussianText.cpp b/Utils/_Ja25RussianText.cpp index d237991e0..563658c3a 100644 --- a/Utils/_Ja25RussianText.cpp +++ b/Utils/_Ja25RussianText.cpp @@ -169,6 +169,7 @@ STR16 gzIMPMajorTraitsHelpTextsGunslinger[]= L"-%d%s ОД на перезарядку пистолетов, автоматических пистолетов и револьверов\n", L"+%d клик прицеливания для пистолетов, автоматических пистолетов и револьверов", L"+%d кликов прицеливания для пистолетов, автоматических пистолетов и револьверов\n", + L"Can fan the hammer with revolvers\n", // TODO.Translate }; STR16 gzIMPMajorTraitsHelpTextsMartialArts[]= diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 6d3ea5a32..15a2c24da 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -8584,6 +8584,7 @@ STR16 szUDBAdvStatsTooltipText[]= L"|D|e|c|a|y |M|o|d|i|f|i|e|r",// TODO.Translate L"|B|e|s|t |L|a|s|e|r |R|a|n|g|e",// TODO.Translate L"|P|e|r|c|e|n|t |R|e|c|o|i|l |M|o|d|i|f|i|e|r", // 65 + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. @@ -8653,7 +8654,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nThe percentage of the item\nthat will be eaten at once.\n \nLower is better.", // TODO.Translate L"\n \nMorale is adjusted by this amount.\n \nHigher is better.", // TODO.Translate L"\n \nThis item becomes stale over time.\nIf more then 50% is molded it becomes poisoneous.\nThis is the rate at which mold is generated.\nLower is better.", // TODO.Translate - L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", + L"", + L"\n \nWhen attached to a ranged weapon capable\nof Burst or Autofire modes, this item modifies\nthe weapon's Recoil by the listed percentage.\n \nReducing recoil makes it easier to keep the gun's\nmuzzle pointed at the target during a volley.\n \nLower is better.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", // TODO.Translate }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]= diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index 9b9e2f75b..db00203f9 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -8566,6 +8566,7 @@ STR16 szUDBAdvStatsTooltipText[]= L"|М|о|д|и|ф|и|к|а|т|о|р |п|о|р|ч|и", L"|О|п|т|и|м|а|л|ь|н|а|я |д|а|л|ь|н|о|с|т|ь |л|а|з|е|р|а", L"|М|о|д|и|ф|и|к|а|т|о|р |о|т|д|а|ч|и |в |%", + L"|F|a|n |t|h|e |H|a|m|m|e|r", // TODO.Translate }; // Alternate tooltip text for weapon Advanced Stats. Just different wording, nothing spectacular. @@ -8635,7 +8636,9 @@ STR16 szUDBAdvStatsExplanationsTooltipText[]= L"\n \nМораль изменяется на это значение.\n \nБольше - лучше.", L"\n \nПища портится со временем.\nЕсли она на 50% покрыта плесенью,\nто она становится ядовитой.\nЭтот модификатор определяет, с какой\nскоростью будет портиться еда.\n \nМеньше - лучше.", L"\n \nПрисоединенный к огнестрельному оружию,\nэтот предмет проецирует точку на цели,\nчто облегчает прицеливание.\n \nЭтот эффект работает до данного расстояния,\nзатем начинает уменьшаться и, в конце концов,\nпропадает на значительном расстоянии.\n \nБольше - лучше.", - L"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести огонь очередями, этот\nпредмет изменяет отдачу оружия на\nуказанный процент.\n \nСнижение отдачи позволяет дольше\nудерживать ствол оружия в направлении цели\nво время залпа.\n \nМеньше - лучше.", + L"", + L"\n \nПрисоединенный к огнестрельному оружию,\nспособному вести огонь очередями, этот\nпредмет изменяет отдачу оружия на\nуказанный процент.\n \nСнижение отдачи позволяет дольше\nудерживать ствол оружия в направлении цели\nво время залпа.\n \nМеньше - лучше.", // 65 + L"\n \nIf a gunslinger wields this gun two-handed,\nthey can burst in hipfire.", // TODO.Translate }; STR16 szUDBAdvStatsExplanationsTooltipTextForWeapons[]=